flask入门教程第9章测试报错RuntimeError: Working outside of application context?

第九章测试代码编写测试代码时报错RuntimeError: Working outside of application context。检查过语法核对代码似乎也没啥问题,尝试过把类注释掉,import语句后直接print(db.create_all()),仍旧报错RuntimeError: Working outside of application context?
请问这是咋回事呢?看到报错信息说似乎要在视图函数内部相关代码处添加with app.app_context()?

报错信息:

您好, 我遇到了一样的问题,请问你解决了吗?

with app.app_context() 或者push

1 个赞

谢谢我通过push解决了

ctx = app.app_context()
ctx.push()

Flask-SQLAlchemy 从 3.0 版本开始,包括 db.create_all 等大部分操作都需要程序上下文才能执行。另外它还修改了创建 engine 的方式,导致没法在测试的时候覆盖设置数据库 URL(只能使用工厂函数的形式来创建程序)。

建议目前先固定 Flask-SQLAlchemy 版本为 2.5.1:

pip install flask-sqlalchemy==2.5.1
2 个赞

多谢大佬!