@hephaest0217
Туда сюда миллионер )

Почему не создается БД при старте телеграм бота?

Столкнулся с такой проблемой. смотрю уже не один видос и вечно одна проблема при запуске просто в папке не создается таблица бд и на этом все.

cur.execute("CREATE TABLE IF NOT EXISTS product(product_id INTEGER PRIMARY KEY, title TEXT, photo TEXT)")


https://github.com/nkorgik/AiogramBotLessons/tree/... код телеграмм бота

#sqlite-db.py
import sqlite3 as sq

async def db_connect() -> None:
    global db, cur

    db = sq.connect('new.db')
    cur = db.cursor()

    cur.execute("CREATE TABLE IF NOT EXISTS product(product_id INTEGER PRIMARY KEY, title TEXT, photo TEXT)")

    db.commit()


async def get_all_products():

    products = cur.execute("SELECT * FROM product").fetchall()

    return products  # list


async def create_new_product(state):

    async with state.proxy() as data:
        product = cur.execute("INSERT INTO product (title, photo) VALUES (?, ?)", (data['title'], data['photo']))
        db.commit()

    return product


async def delete_product(product_id: int) -> None:
    cur.execute("DELETE FROM product WHERE product_id = ?", (product_id,))
    db.commit()


async def edit_product(product_id: int, title: str) -> None:
    cur.execute("UPDATE product SET title = ? WHERE product_id = ?", (title, product_id,))
    db.commit()


Не кидайте помидорами 4 день в питоне(
  • Вопрос задан
  • 99 просмотров
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
просто в папке не создается таблица бд и на этом все.

создает товар и сохраняет в бд без ошибок.

Дай угадаю, коннект к базе делаешь командой вида sqlite3.connect('somefile.db')?
Если так, то ты налетел на проблему относительных путей. Основы информатики, начальная школа.
Путь somefile.db будет рассчитываться относительно текущего рабочего каталога, который может меняться в зависимости от способа запуска скрипта, да и просто в ходе его работы. А может не меняться. Т.е. нет гарантий, что текущий рабочий каталог будет совпадать с каталогом, где лежит скрипт.
Лучше определить абсолютный путь к файлу самостоятельно.

from pathlib import Path
import sys

SCRIPT_DIR = Path(sys.argv[0]).parent.resolve()  # каталог, где лежит выполняемый скрипт
DB_PATH = SCRIPT_DIR / 'somefile.db'  # путь к файлу БД в этом каталоге

conn = sqlite3.connect(DB_PATH)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы