db.create_all() 报错,flask_sqlalchemy 创建数据库找不到上下文
报错信息
RuntimeError: Working outside of application context.
This typically means that you attempted to use functionality that needed
the current application. To solve this, set up an application context
with app.app_context(). See the documentation for more information.
原因
Flask-SQLAlchemy 3 开始,所有对db.engine
(和db.session
)的访问都需要一个活动的Flask应用程序上下文。db.create_all
使用 db.engine
,因此它需要一个应用程序上下文。
解决方法
with app.app_context():
db.create_all()
总结
除了以上方法,当然也可以降低 Flask-SQLAlchemy 的版本。