Flask,SQLAlchemy:KeyError:'SQLALCHEMY_TRACK_MODIFICATIONS'

时间:2017-07-24 06:43:33

标签: python amazon-web-services flask runtime-error flask-sqlalchemy

我正在尝试按照以下教程中的说明进行操作:

Tutorial

我从以下代表处下载了代码:

Repo

然而,当我在本地运行并尝试向数据库添加内容时,我收到以下错误:

builtins.KeyError
KeyError: 'SQLALCHEMY_TRACK_MODIFICATIONS'

当我尝试阅读回溯时,我意识到即使我在配置文件中添加了一个变量SQLALCHEMY_TRACK_MODIFICATIONS,一些python库文件也无法识别它存在。

看起来有一个类似问题的另一个答案,但这更像是一个快速修复,而不是为什么会发生这种情况。

我想知道为什么会发生这种情况以及如何解决它。最好不要改变整个结构。

提前多多感谢。

4 个答案:

答案 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

这种使用已经实例化的对象的方式对我有用!!!