python - SqlAlchemy ORM - 在查询时限制列(选择) - column_property

标签 python sqlalchemy

我知道我可以从表中延迟加载列:

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/

相关文章:

python Pandas : Calculate moving average within group

python - 使用多个 isin 子句的 Pandas 索引

python - 自动特征选择 - Sklearn.feature_selection

python - 查找大型数据集中两个日期之间是否有假期?

python - Anaconda 安装后,conda 命令失败并显示 "ImportError: no module named conda.cli"

python - SqlAlchemy如何查询列A==a和B==b和A==b和B==a

python - SQLObject/SQLAlchemy 项目的 Web 呈现框架

python - 我的 SQLAlchemy MySQL 连接总是以休眠结束,这很奇怪吗?

python - Flask 中是否需要使用 db.init_app 或 SQLAlchemy(app) 相同?

python - 如何处理 sqlalchemy+psycopg2 中不断变化的密码?