我正在尝试按照以下教程中的说明进行操作:
我从以下代表处下载了代码:
然而,当我在本地运行并尝试向数据库添加内容时,我收到以下错误:
builtins.KeyError
KeyError: 'SQLALCHEMY_TRACK_MODIFICATIONS'
当我尝试阅读回溯时,我意识到即使我在配置文件中添加了一个变量SQLALCHEMY_TRACK_MODIFICATIONS,一些python库文件也无法识别它存在。
看起来有一个类似问题的另一个答案,但这更像是一个快速修复,而不是为什么会发生这种情况。
我想知道为什么会发生这种情况以及如何解决它。最好不要改变整个结构。
提前多多感谢。
答案 0 :(得分:7)
代码中有两个app = Flask(__name__)
会导致此问题。
这就是我的情况,我删除了一个并将其保存在应用程序的文件夹__init__.py
中,并且有效
答案 1 :(得分:1)
@ Javier的回答给了我一个问题的方向,因为提到错误的原因是有多个烧瓶应用程序。
除了在__init__.py
中创建应用程序之外,还有一个解决方案是使用新创建的应用程序的上下文来运行查询,繁荣!!! 错误消失了。< / p>
以下是使用新创建的应用程序上下文的代码段: -
app = Flask(__name__)
app.config.from_pyfile('./config.py')
init_app(app)
def create():
with app.app_context():
#Below Tags is model class
tag = Tags(**data)
db.session.add(tag)
db.session.commit()
return from_sql(tag)
答案 2 :(得分:1)
我用这种方法解决了这个问题。
删除当前版本,然后替换旧版本。
pip3 uninstall flask-sqlalchemy
pip3 install flask-sqlalchemy==2.1.0
答案 3 :(得分:0)
我遇到了同样的问题..我正在使用连接
对我有用的解决方案是 删除连接对象的一个实例。
在我的 config.py 中
connex_app = connexion.App(__name__, specification_dir=basedir)
在我的 server.py 中
import config
connex_app = config.connex_app
这种使用已经实例化的对象的方式对我有用!!!