问题是,要获取计数和表数据,我必须在Django中两次访问数据库。例如:
count = queryset.count() # To get count
data = queryset.values('columns') # To get data
有没有办法在单个查询中获取数据。一种解决方案是使用len()函数,但是将较大的表加载到RAM中并不是很好。
在mysql中,我明白了,但是如何通过Django ORM执行
SELECT t1.count, id FROM table1, (select count(*) as count FROM table1) as t1 limit 10;
任何帮助将不胜感激。
答案 0 :(得分:0)
我的意思是,len
应该只在首先获取数据时才计算内存中已有的内容,因此它应该比对数据库的两次查询更好。
data = queryset.values('columns') # To get data
count = len(data) # To get count from database records in memory
无论如何,对于没有Django文档的模型层的直接数据库查询:
from django.db import connection
def my_custom_sql(self):
with connection.cursor() as cursor:
cursor.execute("SELECT t1.count, id FROM table1, (select count(*) as count FROM table1) as t1 limit 10")
row = dictfetchall(cursor)
return row