You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用SQLAlchemy当前支持的ORM API统计唯一行?

SQLAlchemy 2.0+ ORM 统计唯一行数量的正确写法

针对你用旧Query API的self.session.query(table).distinct().count()统计唯一行的需求,以下是SQLAlchemy 2.0+受支持的ORM实现方式:

场景1:统计整行去重后的总数(与旧API行为完全一致)

如果需要对整个表的行进行去重后统计数量,正确写法需将去重查询转为子查询:

from sqlalchemy import select, func

count = self.session.scalar(
    select(func.count())
    .select_from(select(table).distinct().subquery())
)

你之前尝试的代码未正常工作,大概率是缺少.subquery()显式将去重查询转为子查询,部分数据库驱动需要明确的子查询结构才能正确解析。

如果你的ORM模型对应的数据表有主键(比如id列),也可以通过统计主键的唯一值数量达到相同效果,这种写法性能通常更优:

count = self.session.scalar(
    select(func.count(func.distinct(table.id)))
)

场景2:统计特定列的唯一值数量

如果只需要统计某一列的唯一值数量,直接使用func.count(func.distinct(列名))即可:

count = self.session.scalar(
    select(func.count(func.distinct(table.column_name)))
)

内容的提问来源于stack exchange,提问作者Ginko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 04:19:58