首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回peewee ORM中分组项的计数

返回peewee ORM中分组项的计数
EN

Stack Overflow用户
提问于 2017-08-18 23:49:57
回答 2查看 2.3K关注 0票数 0

我正在尝试使用peewee ORM查询一个唯一字段的列表,以及每个唯一字段的计数。我可以很容易地从MySQL工作台得到我想要的东西,但是我似乎不能从peewee中得到类似的结果。工作的MySQL查询如下所示:

代码语言:javascript
复制
select Title, Severity, count(*) from qmodel group by Title;

我已经尝试了peewee的一些变体,但都不起作用。这是我得到的最接近的结果:

代码语言:javascript
复制
from application.database.models import qmodel as q 

_field_select_list = [
    q.Title,
    q.Severity,
    fn.COUNT(q.Title),
]

for record in q.select(*_field_select_list).group_by(q.Title):
   print record

这将返回计数,但将返回中的title字段替换为count,no title (示例{'Severity': '3', 'Title': '25'})

我还让我的字段选择看起来像这样:

代码语言:javascript
复制
_field_select_list = [
    q.Title,
    q.Severity,
    fn.COUNT(SQL('*')),
]

但这只给了我一个分组列表,没有计数。我已经尝试了许多其他组合,但都没有成功。

EN

回答 2

Stack Overflow用户

发布于 2017-08-22 12:41:44

你需要这样做:

代码语言:javascript
复制
query = (QModel
         .select(QModel.title, QModel.severity, fn.COUNT(QModel.id).alias('ct'))
         .group_by(QModel.title, QModel.severity))
for obj in query:
    print obj.title, obj.severity, obj.ct

请注意,在大多数数据库中,您需要按您选择的每个非聚合列进行分组。

票数 3
EN

Stack Overflow用户

发布于 2017-08-19 02:00:58

您是否尝试过将COUNT函数留空?它在我的数据上工作得很好。

代码语言:javascript
复制
query = q.select(q.Title, q.Severity, fn.COUNT()).group_by(q.Title)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45760563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档