""" 应用 039_sync_balance_to_user_consumption.sql 中的触发器定义。 运行: python backend/scripts/apply_sync_trigger.py 要求: - 已配置好数据库连接(复用 app.database.SessionLocal 的配置)。 - 目标数据库为 Postgres,且 schema 为 aigcspace。 """ from pathlib import Path import sys # Ensure backend package is importable when running the script from workspace root project_root = Path(__file__).parent.parent sys.path.insert(0, str(project_root)) from app.database import SessionLocal SQL_FILE = Path(__file__).parent.parent / "migrations" / "039_sync_balance_to_user_consumption.sql" def apply_sql(): sql_text = SQL_FILE.read_text(encoding="utf-8") # 用 SessionLocal 里的 engine 执行原始 SQL engine = SessionLocal().bind # 使用底层 DB-API 原始连接直接执行整块 SQL(兼容包含 $$/函数体的脚本) raw_conn = engine.raw_connection() try: cur = raw_conn.cursor() cur.execute(sql_text) raw_conn.commit() cur.close() finally: raw_conn.close() def main(): apply_sql() print("触发器脚本已执行:039_sync_balance_to_user_consumption.sql") if __name__ == "__main__": main()