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

本文介绍了如何使用SQLAlchemy在SQL表达式层和ORM层执行`SELECT count(*)`查询。在SQL表达式层,通过`func.count()`和`select_from()`方法实现;在ORM层,定义了一个`BaseQuery`类,扩展了`Query`对象,添加了`count_star()`方法来获取计数。这两种方法都考虑到了已有的过滤器和JOIN条件。
摘要由CSDN通过智能技术生成

我设法使用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条件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值