2013-11-20 33 views
1

比方說,我有SQLAlchemy ORM模型實例model和它的屬性名稱attr_nameSQLAlchemy模型屬性操作和數據庫訪問

有沒有辦法確定getattr(model, attr_name)是否會查詢數據庫?我的意思是我需要一個返回TrueFalse的函數getattr_does_emit_sql(model, attr_name)

+0

嗯。你問是否可以通過編程方式,運行時或手動方式(通過調試和檢查模型對象,日誌記錄等)來確定它嗎? –

+0

抱歉含糊不清 - 問題已更新。 –

回答

1

解決了它。功能是

from sqlalchemy.orm.attributes import QueryableAttribute 
def getattr_does_emit_sql(model, attr_name): 
    return (attr_name not in model.__dict__ 
     and hasattr(type(model), attr_name 
     and isinstance(getattr(type(model), attr_name), QueryableAttribute) 
    )