我使用sqlalchemy作为我的orm,并使用declarative
作为Base。如何获取更改字段的原始值?
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
我的问题是,我怎么知道用户已被修改,以及如何获得没有查询数据库的原始值再次?
user = Session.query(User).filter_by(id=user_id).first()
# some operations on user
....
# how do I know if the user.name has been changed or not?
...
# How do get the original name?
在此先感谢!
UPDATE
我发现了一个方法get_history
可以得到一个字段的历史价值,但我不知道这是否是我的目的的正确方法。
from sqlalchemy.orm.attributes import get_history
user = Session.query(User).first()
print user.name # 'Jack'
print get_history(user, 'name') # ((),['Jack'],())
user.name = 'Mike'
print get_history(user, 'name') # (['Mike'],(),['Jack'])
因此,我们可以检查get_history
的值,但它是最好的方法吗?
我认为'get_history'是正确的方法。这是一个记录在案的公共职能。 – aaronasterling 2010-09-05 12:59:57