【发布时间】:2011-04-08 10:19:58
【问题描述】:
我使用 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?
提前致谢!
更新
我发现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是正确的方法。这是一个记录在案的公共功能。
标签: python sqlalchemy insert-update