71 lines
2.4 KiB
Python
71 lines
2.4 KiB
Python
"""
|
||
Инструкции по обновлению схемы БД при изменении моделей
|
||
|
||
ВАЖНО: Этот проект использует SQLAlchemy ORM, поэтому изменения моделей
|
||
требуют обновления БД. Используйте один из методов ниже.
|
||
"""
|
||
|
||
import asyncio
|
||
from app.database import engine
|
||
from app.models import Base
|
||
|
||
|
||
async def drop_all_tables():
|
||
"""
|
||
⚠️ ОПАСНО: Удаляет все таблицы из БД
|
||
Используйте только для разработки!
|
||
"""
|
||
async with engine.begin() as conn:
|
||
await conn.run_sync(Base.metadata.drop_all)
|
||
print("❌ Все таблицы удалены")
|
||
|
||
|
||
async def create_all_tables():
|
||
"""
|
||
Создает все таблицы на основе моделей
|
||
Безопасно использовать - не удаляет существующие таблицы
|
||
"""
|
||
async with engine.begin() as conn:
|
||
await conn.run_sync(Base.metadata.create_all)
|
||
print("✅ Все таблицы созданы/обновлены")
|
||
|
||
|
||
async def reset_db():
|
||
"""
|
||
Полный сброс БД: удаляет все и создает заново
|
||
⚠️ Используйте только если вам не нужны старые данные
|
||
"""
|
||
print("⚠️ Сброс БД...")
|
||
await drop_all_tables()
|
||
await create_all_tables()
|
||
print("✅ БД полностью восстановлена")
|
||
|
||
|
||
async def main():
|
||
"""Интерактивное меню"""
|
||
print("\n" + "=" * 60)
|
||
print("УПРАВЛЕНИЕ БД")
|
||
print("=" * 60)
|
||
print("\n1. Создать/обновить таблицы")
|
||
print("2. Полный сброс БД (удалить все данные)")
|
||
print("3. Выход")
|
||
|
||
choice = input("\nВыберите действие (1-3): ").strip()
|
||
|
||
if choice == "1":
|
||
await create_all_tables()
|
||
elif choice == "2":
|
||
confirm = input("\n⚠️ Вы уверены? Все данные будут удалены (yes/no): ")
|
||
if confirm.lower() == "yes":
|
||
await reset_db()
|
||
else:
|
||
print("Отменено")
|
||
elif choice == "3":
|
||
print("До свидания!")
|
||
else:
|
||
print("❌ Неверный выбор")
|
||
|
||
|
||
if __name__ == "__main__":
|
||
asyncio.run(main())
|