2014-01-14 31 views
0

在SqlAlchemy中,我需要使用給定的字段列表來獲取部分實體。選擇具有特定列的部分實體

其他答案建議做任何操作:

session.query(User.id, User.login).all() 
session.query(User).with_entities(User.id, User.login).all() 

然而,SA然後返回列的元組:

[ (1, 'user1'), (2, 'user2') ] 

如何獲取用戶,而不是元組的對象,但限制檢索列?

回答

1

請閱讀文檔的Deferred Column Loading部分。您可能需要配置於模型本身的默認deferred行爲,但在你的情況下,下面的配置應做到:

session.query(User).options(defer(User.name, User.nickname, ...)).all() 

,你必須列出所有你想從數據庫推遲裝載列。

如果你是幸運的,有sa.version>=0.9,你也可以使用load_only

session.query(User).options(load_only(User.id, User.login)).all() 

請注意,您應該加載id列(或其他primary_key列(S))。