我知道我可以从表中延迟加载列:
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
有一些column_property
未在 中列出的额外 s,所以MyTable.__table__.columns
即使我不想要它们,它们也会包含在查询中。
那么有没有一种结构可以直接表达我想要的限制?例如类似的东西
session.query(MyTable).options(XXselect('col1', 'col2', 'col3'))