我想知道是否可以在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中要慢得多。我正在寻找一个不需要表具有已知主键的解决方案,如Get the number of rows in table using SQLAlchemy中所建议的。
我需要对一个包含许多连接的非常复杂的查询进行计数。我使用连接作为过滤器,所以我只想知道实际对象的数量。count()不够,但我在这里的文档中找到了答案:
http://docs.sqlalchemy.org/en/latest/orm/tutorial.html
代码如下所示(计算用户对象):
我设法在两个层上用SQLAlchemy呈现了下面的SELECT。
来自SQL表达式层的用法
从ORM层使用
您只需子类化
Query
(您可能已经有了)并提供一个专门的count()
方法,就像这个方法一样。请注意,
order_by(None)
重置查询的顺序,这与计数无关。使用此方法,您可以在任何ORM查询上拥有一个
count(*)
,它将遵守所有已指定的filter
和join
条件。只查询一个已知列:
相关问题 更多 >
编程相关推荐