run_migration_049.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. """
  2. 运行迁移脚本:创建课程分类与课程表(迁移 049)
  3. 用法:
  4. python D:\AIGC-space\backend\scripts\run_migration_049.py
  5. 或(在 backend 目录下):
  6. python -m scripts.run_migration_049
  7. 脚本会在执行前要求交互确认,防止误操作。它会使用项目的 `app.database.engine` 连接执行 SQL 文件。
  8. """
  9. import sys
  10. from pathlib import Path
  11. from sqlalchemy import text
  12. # Ensure `app` package imports work
  13. sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
  14. from app.database import engine
  15. MIGRATION_PATH = Path(__file__).resolve().parents[1] / 'migrations' / '049_create_course_tables.sql'
  16. def main():
  17. if not MIGRATION_PATH.exists():
  18. print(f"迁移文件不存在: {MIGRATION_PATH}")
  19. return
  20. sql = MIGRATION_PATH.read_text(encoding='utf-8')
  21. print("将要执行的 SQL:\n")
  22. print(sql)
  23. resp = input("确认执行上述 SQL 吗?这会创建课程相关表(y/N):")
  24. if resp.lower() != 'y':
  25. print("已取消。")
  26. return
  27. try:
  28. with engine.connect() as conn:
  29. print("开始执行迁移...")
  30. conn.execute(text(sql))
  31. conn.commit()
  32. print("迁移执行成功。")
  33. except Exception as e:
  34. print(f"迁移执行失败: {e}")
  35. if __name__ == '__main__':
  36. main()