Python Django模型分组
我有一个简单的SQL查询-Python Django模型分组,python,django,django-models,group-by,django-orm,Python,Django,Django Models,Group By,Django Orm,我有一个简单的SQL查询- SELECT pid, COUNT(*) AS docs FROM xml_table WHERE suid='2' GROUP BY pid; 我如何使用Django ORM(即Django模型)实现这一点。基本上,我不知道如何使用分组方式?XML\u table.objects.filter(suid='2')。values('pid')。annotation(docs=Count('pid'))。order\u BY() 这非常有效 from collecti
SELECT pid, COUNT(*) AS docs FROM xml_table WHERE suid='2' GROUP BY pid;
我如何使用Django ORM(即Django模型)实现这一点。基本上,我不知道如何使用
分组方式?XML\u table.objects.filter(suid='2')。values('pid')。annotation(docs=Count('pid'))。order\u BY()
这非常有效
from collections import defaultdict
count = defaultdict( int )
for doc in XML_Table.objects.filter(suid='2'):
count[doc.pid] += 1
这不是SQL。通常它比SQL更快,因为它不会对大表或联接结果进行排序。我会用“经常”来反驳。任何要使用这个的人都应该先测试一下。我来这里是因为我需要超过一百万行的计数。你的查询集必须返回所有的百万。此外,您将返回整行并对其进行实例化--如果按此方法执行,a.values()应该会快得多。