| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- """
- 应用 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()
|