migrate.py 1000 B

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