gpt4 book ai didi

python - 通过 sqlalchemy 添加对象抛出 KeyError : 'SQLALCHEMY_TRACK_MODIFICATIONS'

转载 作者:太空宇宙 更新时间:2023-11-04 08:47:26 27 4
gpt4 key购买 nike

这是我的第一个 python 应用程序,我一直在努力让迁移与 flask 和 sqlalchemy 一起正常工作。我终于让它工作了,但是现在当我运行应用程序时,当我向用迁移代码修改的表添加对象时出现错误。这是在 db.session.add(newTag) 上抛出异常的 View

    def put(self):
json_data = request.get_json(force=True)

foo = json_data['foo'] if 'foo' in json_data else ''
bar = json_data['bar'] if 'bar' in json_data else ''
baz = json_data['baz'] if 'baz' in json_data else ''
try:
boo = parse(json_data['boo'])
far = parse(json_data['far'])
except:
return jsonify(result='Invalid date')

faz = json_data['faz'] if 'faz' in json_data else ''

if faz == '':
return jsonify(result="faz is missing")

newTag = Tags(faz, baz, foo, bar, boo, far, True)
db.session.add(newTag)
db.session.commit()
return {'Success, tag' + str(newTag.id) + ' created'}

我的模型是这样的

class Tags(db.Model):
id = db.Column(db.Integer, primary_key=True)
faz = db.Column(db.String(255))
foo = db.Column(db.Integer)
bar = db.Column(db.Integer)
baz = db.Column(db.Integer)
boo = db.Column(db.DateTime)
far = db.Column(db.DateTime)
status = db.Column(db.Boolean)

def __init__(self, faz, foo, bar, baz, boo, far, status):
self.faz = faz
self.foo = foo
self.bar = bar
self.baz = baz
self.boo = boo
self.far = far
self.status = status

我不确定是否需要任何进一步的详细信息来帮助我。我已将 SQLALCHEMY_TRACK_MODIFICATIONS = False 放入包含我的 SQLALCHEMY_DATABASE_URI 的 config.py 文件中。

最佳答案

我有完全相同的错误。

这个错误确实不明确。我在 mysql 日志中寻找响应,但一切正常。

然后我使用旧版本的 sqlalchemy。我使用 2.1 版,然后传入 1.0 版。我得到的错误更清楚。

将 SQLALCHEMY_TRACK_MODIFICATIONS 设置为 False 或 True 绝对不会改变您的错误。

听到的问题是连接进入您的应用程序、数据库和 sqlalchemy。

听到是我的声音

app
main.py
models.py
views
__init__.py
manage.py
views.py

在我的 init.py 中,我放入了所有配置

from flask_sqlalchemy import SQLAlchemy
from flask import Flask

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:password@172.17.0.2/mydatabaseapp'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

db = SQLAlchemy()
db.init_app(app)

然后我在 manager.py 中创建一个类来操作我的数据库所以我必须在我的 manager.py 中导入数据库,我这样做了。

我的 views.py 只是调用了我的管理器的方法,我的 main.py 调用了我的 views.py 的函数

但问题是我总是有这个错误。所以我改变了我的架构。我在我刚刚放入的应用程序文件夹中创建了一个文件 config.py

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

在文件中。在我的 main.py 中,我放了

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:password@172.17.0.2/mydatabaseapp'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db.init_app(app)

然后,如果我需要在我的应用程序中的某处调用 db,我只需从 main.py 中调用它,问题就解决了。

我对 flask 和 is architecture 的理解不够,无法向您解释这个问题,真的很抱歉。希望回复对你有帮助。我认为这个错误通常发生在 flask 的配置进入 ORM 而你的应用程序不正常时。

关于python - 通过 sqlalchemy 添加对象抛出 KeyError : 'SQLALCHEMY_TRACK_MODIFICATIONS' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38954803/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com