inf*_*oop 7 django django-queryset
我想从一个匹配给定过滤器查询的大型数据库中检索前500个结果.
目前我正在使用以下(非常低效)的方法..
results = Entries.objects.filter(text__icontains="somequery")[0:500]
Run Code Online (Sandbox Code Playgroud)
但我认为此查询将整个数据库加载到内存中,然后截断结果.这非常慢.
有没有更优雅的方式来做到这一点?谢谢!
Yuj*_*ita 25
这是做到这一点的方法.
SQL生成使用,LIMIT因此它不会将整个数据库加载到内存中并进行python切片.
请注意,您可以使用http://docs.djangoproject.com/en/dev/faq/models/#how-can-i-see-the-raw-sql-queries-django-is查看SQL django正在编写的内容.django.db.connection.queries
-运行
但一个鲜为人知的技巧是打印queryset.query或打电话sql = queryset.query.__str__()
>>> results = Entries.objects.filter(text__icontains="somequery")[0:500]
>>> print results.query
SELECT ... FROM ... WHERE ... LIKE ... LIMIT 500
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5607 次 |
| 最近记录: |