我想知道是否可以在 SQLAlchemy 中生成 SELECT COUNT(*) FROM TABLE
语句,而无需使用 execute()
明确要求它。如果我使用:
session.query(table).count()
然后它会产生类似的东西:
SELECT count(*) AS count_1 FROM
(SELECT table.col1 as col1, table.col2 as col2, ... from table)
这在带有 InnoDB 的 MySQL 中要慢得多。我正在寻找一种不需要表具有已知主键的解决方案,如 使用 SQLAlchemy 获取表中的行数中 所建议的那样。
原文由 tiho 发布,翻译遵循 CC BY-SA 4.0 许可协议
我设法在两层上使用 SQLAlchemy 呈现以下 SELECT。
SQL 表达式层的用法
ORM 层的用法
你只需
Query
(你可能有)并提供一个专门的count()
方法,就像这个。请注意
order_by(None)
重置查询的顺序,与计数无关。使用此方法,您可以在任何 ORM 查询中使用
count(*)
,这将遵循已指定的所有filter
和join
条件。