diff --git a/db.py b/db.py index ee9265b..1a10e7e 100644 --- a/db.py +++ b/db.py @@ -35,9 +35,34 @@ async def init_db(): db_path = DATABASE_URL.replace("sqlite+aiosqlite:///", "") abs_db_path = os.path.abspath(db_path) print(f"Абсолютный путь к базе данных: {abs_db_path}") + # Если файл отсутствует или пустой, или это папка — создаём таблицы if not os.path.exists(abs_db_path): print("Файл базы данных отсутствует, будет создан.") need_create = True + elif os.path.isdir(abs_db_path): + print("Вместо файла обнаружена папка, будет удалена и создан файл.") + import shutil + shutil.rmtree(abs_db_path) + open(abs_db_path, 'a').close() + need_create = True + elif os.path.getsize(abs_db_path) == 0: + print("Файл базы данных пустой, будут созданы таблицы.") + need_create = True + else: + # Проверяем наличие таблиц + import sqlite3 + try: + conn = sqlite3.connect(abs_db_path) + cursor = conn.cursor() + cursor.execute("SELECT name FROM sqlite_master WHERE type='table';") + tables = cursor.fetchall() + conn.close() + if not tables: + print("В базе нет таблиц, будут созданы.") + need_create = True + except Exception as e: + print(f"Ошибка проверки таблиц: {e}") + need_create = True else: print(f"База данных: {DATABASE_URL}") # Для других СУБД всегда пытаемся создать таблицы @@ -49,4 +74,4 @@ async def init_db(): tables = Base.metadata.tables.keys() print(f"Созданы таблицы: {', '.join(tables)}") else: - print("База данных уже существует, создание таблиц пропущено.") \ No newline at end of file + print("База данных уже существует и содержит таблицы, создание пропущено.") \ No newline at end of file