This commit is contained in:
27
db.py
27
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("База данных уже существует, создание таблиц пропущено.")
|
||||
print("База данных уже существует и содержит таблицы, создание пропущено.")
|
||||
Reference in New Issue
Block a user