Как получить исходное значение измененных полей?

Я использую sqlalchemy как свою orm, а декларативную как База.

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 , но это лучший метод?

10
задан Freewind 5 September 2010 в 12:55
поделиться