栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

散布Flask模型时,引发RuntimeError:“未在db上注册应用程序”

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

散布Flask模型时,引发RuntimeError:“未在db上注册应用程序”

这与Flask的应用程序上下文有关。使用初始化时

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

如果需要在运行时执行此操作,则必须明确说明哪个应用程序是所有调用的“当前”应用程序。您可以通过将代码更改为使用

withapp.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编写命令,则该命令将自动访问上下文。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/610477.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号