我正在尝试查询唯一字段上的列表,以及使用peewee ORM查询每个唯一字段的计数。我可以从MySQL工作台轻松获得我想要的东西,但是我似乎无法从peewee中获得类似的结果。工作的MySQL查询如下所示:
select Title, Severity, count(*) from qmodel group by Title;
我在peewee尝试了一些变化,但没有任何效果。这和我的情况差不多:
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'}
)
我也让我的字段选择看起来像这样:
_field_select_list = [
q.Title,
q.Severity,
fn.COUNT(SQL('*')),
]
但这只是给了我一个分组列表,没有计数。我尝试了许多其他组合而没有运气。
答案 0 :(得分:1)
你需要做这样的事情:
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
注意,在大多数数据库中,您需要按照您选择的非聚合列进行分组。
答案 1 :(得分:0)
您是否尝试过将COUNT
函数留空?它对我的数据很好。
query = q.select(q.Title, q.Severity, fn.COUNT()).group_by(q.Title)