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