我知道我可以從表中延遲加載列:SQLAlchemy的ORM - 在查詢時間限制列(選擇) - column_property
session.query(MyTable).options(defer(colname)
for colname in ['col4', 'col5', .., 'colN'])
我只想要第一個3列,因此可以縮短,爲以下幾點:
session.query(MyTable).options(defer(col.name)
for col.name in MyTable.__table__.columns
if col.name not in ['col1', 'col2', 'col3'])
因爲MyTable
具有未在MyTable.__table__.columns
列出了一些額外的column_property
情況下,它們獲得包括在查詢,即使我不希望他們。
那麼有沒有一個構造來表達我想直接作爲一個限制嗎? 例如像
session.query(MyTable).options(XXselect('col1', 'col2', 'col3'))
有此建議其使用defer_everything_but()在此類似螺紋:http://stackoverflow.com/questions/6977658/sqlalchemy-selecting-which-columns-of-an-object -in-A-查詢/ 6977901#6977901。我偶然發現了這個問題,因爲我想遵循一種關係,這需要完整的對象。但我不想選擇所有列(例如,如果用戶沒有對所有列的讀取權限)。我不知道有任何其他方式可以跟蹤關鍵字, – Kevin 2013-12-09 17:17:24