#!/usr/bin/env python3 """ 数据库迁移脚本 """ import asyncio import sys import os # 添加项目根目录到路径 sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) async def main(): from app.core.config import get_settings from aerich import Command settings = get_settings() # Aerich 配置 TORTOISE_ORM = { "connections": { "default": settings.database_url }, "apps": { "models": { "models": ["app.models", "aerich.models"], "default_connection": "default", } }, "use_tz": False, "timezone": "UTC", } command = Command(tortoise_config=TORTOISE_ORM, app="models") # 初始化 Aerich(首次运行) if not os.path.exists("./migrations"): print("🔧 初始化数据库迁移...") await command.init() print("✅ 迁移初始化完成") # 生成迁移文件 print("📝 生成迁移文件...") try: migration_name = sys.argv[1] if len(sys.argv) > 1 else "update" await command.migrate(name=migration_name) print(f"✅ 迁移文件生成成功: {migration_name}") except Exception as e: print(f"⚠️ 生成迁移文件失败: {e}") # 尝试升级 pass # 应用迁移 print("🔄 应用数据库迁移...") try: await command.upgrade() print("✅ 迁移应用成功") except Exception as e: print(f"❌ 迁移应用失败: {e}") if __name__ == "__main__": asyncio.run(main())