ale*_*lex 14 python sqlalchemy
有没有办法强制sqlalchemy映射的对象被考虑dirty?例如,给出sqlalchemy的对象关系教程 的上下文,证明了问题,
a=session.query(User).first()
a.__dict__['name']='eh'
session.dirty
Run Code Online (Sandbox Code Playgroud)
高产,
IdentitySet([])
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种方法来强迫用户a进入脏状态.
出现此问题是因为使用sqlalchemy映射的类控制了属性getter/setter方法,这会阻止sqlalchemy注册更改.
Mik*_*maa 20
我最近遇到了同样的问题而且并不明显.
对象本身并不脏,但它们的属性是.正如我所知,SQLAlchemy只会回写已更改的属性,而不是整个对象.
如果您使用属性设置set_attribute并且它与原始属性数据不同,则SQLAlchemy会发现该对象是脏的(TODO:我需要详细说明它是如何进行比较的):
from sqlalchemy.orm.attributes import set_attribute
set_attribute(obj, data_field_name, data)
Run Code Online (Sandbox Code Playgroud)
如果要将对象标记为脏,而不管原始属性值如何,无论它是否已更改,请使用flag_modified:
from sqlalchemy.orm.attributes import flag_modified
flag_modified(obj, data_field_name)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4590 次 |
| 最近记录: |