我正在尝试使用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('*')),
]但这只给了我一个分组列表,没有计数。我已经尝试了许多其他组合,但都没有成功。
发布于 2017-08-22 12:41:44
你需要这样做:
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请注意,在大多数数据库中,您需要按您选择的每个非聚合列进行分组。
发布于 2017-08-19 02:00:58
您是否尝试过将COUNT函数留空?它在我的数据上工作得很好。
query = q.select(q.Title, q.Severity, fn.COUNT()).group_by(q.Title)https://stackoverflow.com/questions/45760563
复制相似问题