""" 运行迁移脚本:删除 `aigcspace.uq_invoice_info_user` 唯一索引(迁移 039) 用法: python D:\AIGC-space\backend\scripts\run_migration_039.py 或(在 backend 目录下): python -m scripts.run_migration_039 脚本会在执行前要求交互确认,防止误操作。它会使用项目的 `app.database.engine` 连接执行 SQL 文件。 """ import sys from pathlib import Path from sqlalchemy import text # Ensure `app` package imports work sys.path.insert(0, str(Path(__file__).resolve().parents[1])) from app.database import engine MIGRATION_PATH = Path(__file__).resolve().parents[1] / 'migrations' / '039_drop_uq_invoice_info_user.sql' def main(): if not MIGRATION_PATH.exists(): print(f"迁移文件不存在: {MIGRATION_PATH}") return sql = MIGRATION_PATH.read_text(encoding='utf-8') print("将要执行的 SQL:\n") print(sql) resp = input("确认执行上述 SQL 吗?这会修改数据库索引(y/N):") if resp.lower() != 'y': print("已取消。") return try: with engine.connect() as conn: print("开始执行迁移...") conn.execute(text(sql)) conn.commit() print("迁移执行成功。") except Exception as e: print(f"迁移执行失败: {e}") if __name__ == '__main__': main()