"""按文件名顺序执行一个目录下的 SQL 文件(迁移脚本共用)。""" from __future__ import annotations from pathlib import Path from alembic import op SQL_DIR = Path(__file__).parent / "sql" def run_dir(name: str) -> None: for f in sorted((SQL_DIR / name).glob("*.sql")): # psycopg 的 exec_driver_sql 支持一次执行多条语句;SQL 里的 % 不做参数替换 op.get_bind().exec_driver_sql(f.read_text().replace("%", "%%"))