无法使用flask-sqlalchemy更新行

时间:2019-06-01 22:11:23

标签: flask-sqlalchemy

我正在使用扩展名为flask-sqlalchemy的简单Flask应用程序,可以从数据库插入和查询,但不能更新条目。

只要我密切关注文档示例和this book,就没想到会有这种问题,但是由于某种原因,它并没有按预期工作。

我在这里找到了建议的答案:

obj = MyTable.query.filter_by(col='something').first()
obj.attr.data = something_else
db.session.commit()

虽然这会更新应用程序中显示的对象数据,但不会更新数据库中的数据。

所以我尝试了这样的事情:

obj = MyTable.query.filter_by(col='something').first()
obj.attr.data = something_else
db.session.add(obj).on_conflict_do_update()
db.session.commit()

然后我得到了错误消息:Object is already attached to session '1' (this is '3')

在搜索此消息时,我发现它与会话未正确关闭有关(扩展程序自动完成)。据我了解,会话应在每个数据库请求后关闭。

我还偶然发现this 2013 article是我提到的那本书的作者,他在尝试删除行时遇到了相同的错误,看起来这是一个错误。

flask-sqlalchemy文档几乎不存在,这使我想到了SQLAlchemy文档。不幸的是,我的知识不允许我自己找到错误,而放弃使用flask-sqlalchemy会造成大量的返工...

0 个答案:

没有答案