您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

散布flask模型时,引发RuntimeError:“未在数据库上注册应用程序”

散布flask模型时,引发RuntimeError:“未在数据库上注册应用程序”

这与Flask的应用程序上下文有关。当使用初始化时db.init_app(app),Flask-sqlAlchemy不知道哪个应用程序是“当前”应用程序(请记住,Flask允许在同一解释器中使用多个应用程序)。你可能有多个应用程序sqlAlchemy在同一进程中使用同一实例,并且Flask-sqlAlchemy将需要知道哪个是“当前”应用程序(由于Flask的上下文上下文是所有事物的本地性质)。

如果你需要在运行时执行此操作,则必须明确说明哪个应用程序是所有调用的“当前”应用程序。你可以通过将代码更改为使用with app.app_context()块来做到这一点:

def create_app():
    app = flask.Flask("app")
    app.config['sqlALCHEMY_DATABASE_URI'] = 'sqlite://'
    app.register_blueprint(api)
    db.init_app(app)
    with app.app_context():
        # Extensions like Flask-sqlAlchemy Now kNow what the "current" app
        # is while within this block. Therefore, you can Now run........
        db.create_all()

    return app

如果要编写需要应用程序上下文的独立脚本,则可以在开始时推送上下文,而不是将所有内容放在一个with块中。

create_app().app_context().push()

如果你为Flask的cli编写命令,则该命令将自动访问上下文。

Python 2022/1/1 18:16:36 有589人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶