flask No application found. Either work inside a view function or push an application context

亦凉 2024-04-01 11:44 143阅读 0赞

前提

flask 使用 flask_sqlalchemy 操作数据库,在视图中使用正常,在视图外使用报错
RuntimeError: No application found . Either work inside a view function or push an application context·,即在内部调用函数操作数据库时报错

分析

sqlalchemy的实例在执行时(数据库增删改查)找不到上下文
它不知道flask初始化时候,app对象,db对象是谁,也就拿不到连接数据库需要的config,就报错了
SQLAlchemy的构造函数为
在这里插入图片描述

解决办法

db = SQLAlchemy(), db.init_app(app)只是初始化db,还需要把app赋值给db

错误:
  1. app = Flask(__name__)
  2. db = SQLAlchemy()
  3. db.init_app(app)
正确:
  1. app = Flask(__name__)
  2. db = SQLAlchemy()
  3. db.init_app(app)
  4. db.app = app

发表评论

表情:
评论列表 (有 0 条评论,143人围观)

还没有评论,来说两句吧...

相关阅读