python - 如何在 Django 中按 id 和 Order By 计数分组

标签 python mysql sql django

我在转换编写正确的 Python 脚本时遇到了麻烦,该脚本执行我在 MYSQL 中可以完成的任务

下面是完全符合我要求的 SQL 查询。我在 python 中被 GROUP BY 语句绊倒的地方。

SELECT COUNT(story_id) AS theCount, `headline`, `url` from tracking
GROUP BY `story_id`
ORDER BY theCount DESC
LIMIT 20

这是目前为止我在 python 中的内容。这可以很好地查询所有文章,但它缺少任何类型的 groupby() 或基于 COUNTorder_by()

articles = ArticleTracking.objects.all().filter(date__range=(start_date, end_date))[:20]

article_info = []    
for article in articles:
    this_value = {
        "story_id":article.story_id,
        "url":article.url,
        "headline":article.headline,
        }

    article_info.append(this_value)

最佳答案

做到这一点的正确方法是使用聚合。

articles = ArticleTracking.objects.filter(date__range=(start_date, end_date))
articles = articles.values('story_id', 'url', 'headline').annotate(count = Count('story_id')).order_by('-count')[:20]

还要查看 Django 中的聚合文档。

https://docs.djangoproject.com/en/dev/topics/db/aggregation/

关于python - 如何在 Django 中按 id 和 Order By 计数分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13365502/

相关文章:

sql - "Partial parsing"柠檬

python - 我应该如何在 django admin 中表示一个 bit flags int 字段?

php - 合并来自两个不同 MySql 查询的两个不同数组

mysql 获取元数据信息——用户创建、用户查询、用户组和数据库大小

mysql - 更新触发后如何避免MySQL错误1442?

php - 带有非空变量的 where 子句

python - 匹配 AWK 中多行的正则表达式。 && 运算符(operator)?

python - Python Click 库如何处理默认为标志和 True 的选项?

python - Travis CI python 导入不起作用

sql - 从另一个表更新一个表