【问题标题】:Filtering a sql count(*) with SQLAlchemy使用 SQLAlchemy 过滤 sql 计数(*)
【发布时间】:2012-02-10 12:35:15
【问题描述】:

如何使用 SQLAlchemy 执行以下 SQL 查询?

SELECT COUNT (*)
FROM det_factura
WHERE company = 31
  AND date::text LIKE '2011-05% ';

【问题讨论】:

  • 你使用的是什么 SQL 后端?

标签: sql count sqlalchemy filtering


【解决方案1】:

如果det_factura 也是一个映射对象,那么这个查询应该这样做:

qry = (session.query(func.count(det_factura.id))
        .filter(det_factura.company==31)
        .filter(det_factura.date.like('2010-05%'))
        )

如果是table 实例,下面的应该可以工作:

qry = select([func.count(det_factura.id)],
        and_(det_factura.company==31,
             det_factura.date.like('2010-05%')
            )
        )

【讨论】:

  • 谢谢。我正在使用 SQLSoup,因为我将此代码改编为 sqlsoup。
  • hmm.. 但是如果您没有 id 字段怎么办?你如何简单地获得“count(*)”,可能在选择列表中存在其他东西(所以你不能使用 sqlalchemy .count())?
  • @shaunc:您总是可以使用func.count('*') 来获得COUNT(*) SQL 表达式。
猜你喜欢
  • 2021-11-08
  • 1970-01-01
  • 1970-01-01
  • 2023-01-24
  • 2014-06-25
  • 2019-12-15
  • 1970-01-01
  • 2020-03-20
  • 1970-01-01
相关资源
最近更新 更多