python - 使用应用程序工厂进行 Flask 迁移时出错

标签 python flask factory-pattern flask-migrate flask-cli

运行.py

db = SQLAlchemy()
migrate = Migrate()

def create_app():
    app = Flask(__name__)
    db.app = app
    db.init_app(app)
    migrate.init_app(app, db)
    return app

if __name__ == '__main__':
    application = create_app()
    application.run()

管理.py

from flask_migrate import MigrateCommand, Manager

from run import create_app


manager = Manager(create_app())
manager.add_command('db', MigrateCommand)

当我运行时:python manage.py db init

Traceback (most recent call last):
  File "manage.py", line 6, in <module>
    manager = Manager(create_app())
TypeError: 'NoneType' object is not callable

当我运行:flask db init

Usage: flask db init [OPTIONS]

Error: Could not locate Flask application. You did not provide the FLASK_APP environment variable.

For more information see http://flask.pocoo.org/docs/latest/quickstart/

我尝试将 FLASK_APP 导出为 run、run.py、run.create_app、run:create_app(),但仍然收到上面显示的错误。是什么导致了这个错误?

最佳答案

flask_migrate 将尝试从 flask-script 使用 Manager,但前提是安装了 flask-script

只要这样做,它就应该有效。您还可以直接从 flask_script 导入。

pip 安装flask_script

ma​​nage.py

from flask_migrate import MigrateCommand
from flask_script import Manager
from run import create_app

app = create_app()
manager = Manager(app)
manager.add_command('db', MigrateCommand)

关于python - 使用应用程序工厂进行 Flask 迁移时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48603220/

相关文章:

python - Flask+nginx+gunicorn 重定向错误

python - 使用 sklearn python 初始化 GMM

python - 无法创建 mysql 数据库 python ("can' t 连接到服务器 localhost")

python - flask-migrate:无法升级数据库,因为 "table does not exist"

python - 矩形移动

python - 将一个函数插入到 Flask 中的多个蓝图中

python - 在 flask sqlalchemy 中使用外键引用值

java - 测试工厂行为

c# - 将参数传递给 Action 调度程序

java - 如何在应用程序启动时启动后台线程