apply_invoice_tables_migration.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. """
  2. 应用 invoice 和 invoice_item 表的迁移脚本(036)
  3. 运行方式:
  4. python scripts/apply_invoice_tables_migration.py
  5. 说明:
  6. - 读取 migrations/036_create_invoice_tables.sql 并执行
  7. - 使用 app.database.engine 连接数据库
  8. - 需要 backend/.env 正确配置数据库连接
  9. """
  10. from pathlib import Path
  11. import sys
  12. from sqlalchemy import text
  13. # 确保可以找到 app 包
  14. project_root = Path(__file__).parent.parent
  15. sys.path.insert(0, str(project_root))
  16. from app.database import engine # noqa: E402
  17. def main() -> None:
  18. sql_file = project_root / "migrations" / "036_create_invoice_tables.sql"
  19. if not sql_file.exists():
  20. print(f"❌ 迁移文件不存在: {sql_file}")
  21. return
  22. sql_content = sql_file.read_text(encoding="utf-8")
  23. try:
  24. with engine.connect() as conn:
  25. conn.execute(text(sql_content))
  26. conn.commit()
  27. print("✅ 已成功创建/更新表: aigcspace.invoice / aigcspace.invoice_item")
  28. except Exception as exc: # noqa: BLE001
  29. print("❌ 执行迁移失败")
  30. print(f"错误信息: {exc}")
  31. if __name__ == "__main__":
  32. main()