【发布时间】:2021-10-16 16:22:27
【问题描述】:
我不太确定如何将这个简单的旧 Flask-Script manage.py 迁移到 Flask 0.11+ 中提供的 CLI
from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
from app import app, db
migrate = Migrate(app, db)
manager = Manager(app)
manager.add_command('db', MigrateCommand)
if __name__ == "__main__":
manager.run()
这样使用,配合 Flask Migrate:
python manage.py db migrate
按照Flask 2.x documentation,我可以到达:
import click
from flask_migrate import Migrate, MigrateCommand
from app import app, db
@app.cli.command("db")
@click.argument("migration_command")
def handle_command(migration_command):
print("Handling command {}".format(migration_command))
但是运行时:
python manage.py db migrate
但似乎从未调用过handle_command,并且db migrate 命令似乎没有运行。
另外,Flask CLI 等效于:
if __name__ == "__main__":
manager.run()
因为manager 不再可用?如果我将其替换为 app.run(),它似乎会忽略所有 CLI 参数,并且永远不会调用 handle_command。
另外,MigrateCommand 怎么样:
manager.add_command('db', MigrateCommand)
我想是为db 创建一个可用命令的枚举?使用 Flask CLI 时,我在哪里传递 MigrateCommand? documentation for Flask Migrate 并不清楚在使用 Flask CLI 时是否需要它。
【问题讨论】: