python mysql select count()_python – 如何使用SQLAlchemy对SELECT COUNT(*)计数行?

我设法使用SQLAlchemy在两个层上呈现以下SELECT。

SELECT count(*) AS count_1

FROM "table"

SQL表达式层的用法

from sqlalchemy import select, func, Integer, Table, Column, MetaData

metadata = MetaData()

table = Table("table", metadata,

Column('primary_key', Integer),

Column('other_column', Integer) # just to illustrate

)

print select([func.count()]).select_from(table)

ORM层的使用

你只是查询Query(你可能还有),并提供一个专门的count()方法,像这样。

from sqlalchemy import func

class BaseQuery(Query):

def count_star(self):

count_query = (self.statement.with_only_columns([func.count()])

.order_by(None))

return self.session.execute(count_query).scalar()

请注意,order_by(无)重置查询的排序,这与计数无关。

使用这种方法,您可以在任何ORM Query上都有一个count(*),这将符合已经指定的所有过滤器和join条件。

你可能感兴趣的:(python,mysql,select,count())