【发布时间】:2018-05-23 22:29:46
【问题描述】:
注意:我这里没有使用 Flask-SQLAlchemy,我使用的是 SQLAlchemy ORM
我在 StackOverflow 上看到几个回答说这是一种更新记录的方法:
session.query(FoobarModel).get(foobar_id).update({'name': 'New Foobar Name!'})
但是我收到一条错误消息:
AttributeError: 'FoobarModel' object has no attribute 'update'
但是,我能够像这样更新:
foobar = session.query(FoobarModel).get(foobar_id)
foobar.name = 'New Foobar Name!'
session.commit()
session.flush()
然后我尝试了这样的事情(这样我就不必写出每个属性):
new_foobar = {'name': 'New Foobar Name!'}
old_foobar = session.query(FoobarModel).get(foobar_id)
for property in new_foobar:
old_foobar[property] = new_foobar[property]
session.commit()
session.flush()
然后我得到这个错误:
TypeError: 'FoobarModel' object does not support item assignment
在做了一些挖掘之后,我发现这是因为即使这样也行不通:
print(old_foobar['name'])
哪个会引发错误:
TypeError: 'FoobarModel' object is not subscriptable
老实说,第一个语法在我看来是最好的,但我无法让它工作。有什么想法吗?
【问题讨论】:
标签: python sqlalchemy