DB creation fix
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
2025-09-05 13:01:50 +09:00
parent fd6007ce93
commit dd065de3ed

27
db.py
View File

@@ -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("База данных уже существует, создание таблиц пропущено.")
print("База данных уже существует и содержит таблицы, создание пропущено.")