我在转换编写正确的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
中所拥有的。这可以很好地查询所有的文章,但是它缺少任何基于COUNT
的groupby()
或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)
正确的方法是使用聚合。
还要查看Django中的聚合文档。
https://docs.djangoproject.com/en/dev/topics/db/aggregation/
别在家里试试这个。
您可以将group_by子句添加到查询集,如下所示:
这不是公共api的一部分,因此它可能会更改,并且根据您正在使用的特定db后端,其工作方式可能不同(或不可用)。值得一提的是,我不确定在筛选之前或之后应用group_by子句是否有什么不同。不过,我在MySQL后端已经取得了成功。
相关问题 更多 >
编程相关推荐