apply_invoice_info_migration.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. """
  2. 应用 invoice_info 表的迁移脚本
  3. 运行方式:
  4. python scripts/apply_invoice_info_migration.py
  5. 说明:脚本会读取 migrations/037_create_invoice_info.sql 并在当前配置的数据库上执行。
  6. """
  7. import sys
  8. from pathlib import Path
  9. from sqlalchemy import text
  10. # 确保项目根在 sys.path,能导入 app 包
  11. project_root = Path(__file__).parent.parent
  12. sys.path.insert(0, str(project_root))
  13. from app.database import engine
  14. def main():
  15. sql_file = project_root / "migrations" / "037_create_invoice_info.sql"
  16. if not sql_file.exists():
  17. print(f"❌ 迁移文件不存在: {sql_file}")
  18. sys.exit(1)
  19. sql_content = sql_file.read_text(encoding="utf-8")
  20. try:
  21. with engine.connect() as conn:
  22. # 直接一次性执行整个 SQL 文件,包含多个语句与注释块
  23. conn.execute(text(sql_content))
  24. conn.commit()
  25. print("✅ 已成功创建/更新表: aigcspace.invoice_info")
  26. except Exception as e:
  27. print("❌ 执行迁移失败")
  28. print(f"错误信息: {e}")
  29. sys.exit(1)
  30. if __name__ == "__main__":
  31. main()