我在转换编写正确的 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()
或基于 COUNT
的 order_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/