使用 SQLAlchemy 过滤 sql 计数(*)
Posted
技术标签:
【中文标题】使用 SQLAlchemy 过滤 sql 计数(*)【英文标题】:Filtering a sql count(*) with SQLAlchemy 【发布时间】:2012-02-10 12:35:15 【问题描述】:如何使用 SQLAlchemy 执行以下 SQL 查询?
SELECT COUNT (*)
FROM det_factura
WHERE company = 31
AND date::text LIKE '2011-05% ';
【问题讨论】:
你使用的是什么 SQL 后端? 【参考方案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 表达式。以上是关于使用 SQLAlchemy 过滤 sql 计数(*)的主要内容,如果未能解决你的问题,请参考以下文章
获取 sqlalchemy 的 upsert 中插入和更新记录的计数