2015-02-05 37 views
2

我知道,使用SQLAlchemy的session對象,我可以調用session.dirty來獲取所有需要提交到數據庫的更改的對象。但是,我怎樣才能確定任何一個對象上的哪些特定字段是髒的?有沒有可以調用返回這些字段的特定對象的方法?或者,也許我可以將對象傳入session的類方法之一來獲取它?確定哪些字段在SQLAlchemy對象上是髒的

回答

3

History類的一個例子:

from sqlalchemy import inspect 

hist = inspect(myobject).attrs.myattribute.history 

如果你想檢查給定對象實例的所有定義的屬性,你也許可以做這樣的事情:

def print_changes(myobj): 
    from sqlalchemy.orm import class_mapper 
    from sqlalchemy import inspect 
    inspr = inspect(myobj) 
    attrs = class_mapper(myobj.__class__).column_attrs # exclude relationships 
    for attr in attrs: 
     hist = getattr(inspr.attrs, attr.key).history 
     print(attr.key, hist.has_changes())