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:///", "")
|
db_path = DATABASE_URL.replace("sqlite+aiosqlite:///", "")
|
||||||
abs_db_path = os.path.abspath(db_path)
|
abs_db_path = os.path.abspath(db_path)
|
||||||
print(f"Абсолютный путь к базе данных: {abs_db_path}")
|
print(f"Абсолютный путь к базе данных: {abs_db_path}")
|
||||||
|
# Если файл отсутствует или пустой, или это папка — создаём таблицы
|
||||||
if not os.path.exists(abs_db_path):
|
if not os.path.exists(abs_db_path):
|
||||||
print("Файл базы данных отсутствует, будет создан.")
|
print("Файл базы данных отсутствует, будет создан.")
|
||||||
need_create = True
|
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:
|
else:
|
||||||
print(f"База данных: {DATABASE_URL}")
|
print(f"База данных: {DATABASE_URL}")
|
||||||
# Для других СУБД всегда пытаемся создать таблицы
|
# Для других СУБД всегда пытаемся создать таблицы
|
||||||
@@ -49,4 +74,4 @@ async def init_db():
|
|||||||
tables = Base.metadata.tables.keys()
|
tables = Base.metadata.tables.keys()
|
||||||
print(f"Созданы таблицы: {', '.join(tables)}")
|
print(f"Созданы таблицы: {', '.join(tables)}")
|
||||||
else:
|
else:
|
||||||
print("База данных уже существует, создание таблиц пропущено.")
|
print("База данных уже существует и содержит таблицы, создание пропущено.")
|
||||||
Reference in New Issue
Block a user