2
我有这个简单的SQL查询 -Django模型组通过
SELECT pid, COUNT(*) AS docs FROM xml_table WHERE suid='2' GROUP BY pid;
我如何得到这个使用Django ORM(即Django模型)。基本上我没有得到如何做GROUP BY
?
我有这个简单的SQL查询 -Django模型组通过
SELECT pid, COUNT(*) AS docs FROM xml_table WHERE suid='2' GROUP BY pid;
我如何得到这个使用Django ORM(即Django模型)。基本上我没有得到如何做GROUP BY
?
XML_table.objects.filter(suid='2').values('pid').annotate(docs=Count('pid')).order_by()
这个工程非常漂亮。
from collections import defaultdict
count = defaultdict(int)
for doc in XML_Table.objects.filter(suid='2'):
count[doc.pid] += 1
这不是SQL。通常它比SQL更快,因为它不会对大型表或联结结果进行排序。
我很狡猾的“经常”。任何人要使用这个应该首先测试。我来到这里是因为我需要超过一百万行。你的查询集将不得不返回全部百万。另外,你要返回整行并实例化 - 如果你走这条路线,.values()应该快很多。 – 2014-03-28 18:01:57