功能
peewee-migrate 自动生成中间文件并更新数据库表
代码
from peewee_migrate import Router
# peewee models 定义模块,具体定义省略
import my_models
# 使用 my_models.mysql_database 注册一个 migrate router
router = Router(database=my_models.mysql_database, ignore=[my_models.BaseModel._meta.name])
# 创建 migrate 中间文件,并获取到文件名
name = router.create(auto=[
my_models
])
# 如果 migrate 文件创建成功,则自动执行后续步骤
if name:
tips = 'New database spec generated, please check migrations/{name}.py\n\n\n'
# 打开生成的文件,然后输出文件内容,供人工确认
with open(f'migrations/{name}.py') as f:
migrate_func = False
for line in f.readlines():
if line.startswith('def migrate('):
migrate_func = True
if line.startswith('def rollback('):
migrate_func = False
if migrate_func:
tips += line
tips += f.read()
tips += 'if confirmed, please type y\n'
# 人工确认通过后,输入 y,自动执行相应修改
if input(tips) == 'y':
router.run(name)