"""统一 UTF-8 读取迁移配置,Windows 默认 GBK 时也不必手工更改系统编码。""" import argparse import configparser from pathlib import Path import sys root = Path(__file__).resolve().parents[1] sys.path.insert(0, str(root)) from alembic import command from alembic.config import Config if __name__ == '__main__': parser = argparse.ArgumentParser(description='执行已交付迁移,不生成或猜测新结构') parser.add_argument('operation', choices=['upgrade', 'current'], default='upgrade', nargs='?') args = parser.parse_args() source = configparser.ConfigParser(defaults={'here': str(root)}) source.read(root / 'alembic.ini', encoding='utf-8') configuration = Config() for key, value in source.items('alembic'): if key != 'here': configuration.set_main_option(key, value.replace('%', '%%')) if args.operation == 'upgrade': command.upgrade(configuration, 'head') else: command.current(configuration)