前提

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

错误
app = Flask(__name__)
db = SQLAlchemy()
db.init_app(app)
正确
app = Flask(__name__)
db = SQLAlchemy()
db.init_app(app)
db.app = app
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐