我知道我可以从表中延迟加载列:
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
未在 MyTable.__table__.columns
中列出,因此这些内容会包含在查询中即使我不想要它们。
那么有没有一个结构可以直接表达我想要的限制? 例如类似的东西
session.query(MyTable).options(XXselect('col1', 'col2', 'col3'))
最佳答案
如果您只想要值,您可以调用:
session.query(Mytable.col1, MyTable.col2, MyTable.col3).
如果您想要带有延迟列的完整对象,MyTable.__table__.columns
应该为您提供所有列,无论混合如何。
关于python - SqlAlchemy ORM - 在查询时限制列(选择) - column_property,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11381610/