逐个获取查询集数据

Noo*_*tor 5 python iteration django django-queryset

我知道常规查询集或迭代器查询集方法一次性评估并返回整个数据集.

例如,拿这个:

my_objects = MyObject.objects.all()
for rows in my_objects:            # Way 1
for rows in my_objects.iterator(): # Way 2
Run Code Online (Sandbox Code Playgroud)

在这两种方法中,所有行都以单一方式获取.在djago中有任何方法可以从数据库中逐个获取查询集行.

为什么这个奇怪的要求

目前我的查询提取让我说n行,但有时我得到Python和Django OperationalError(2006,'MySQL服务器已经消失').

所以要有一个解决方法,我目前正在使用一个奇怪的while循环逻辑.所以想知道是否有任何本机内置方法或我的问题甚至逻辑首先!:)

Say*_*yse 3

我认为您正在寻求限制您的查询集

\n\n

引用上面的链接:

\n\n
\n

使用 Python\xe2\x80\x99s 数组切片语法的子集将 QuerySet 限制为一定数量的结果。这相当于 SQL\xe2\x80\x99s LIMIT 和 OFFSET 子句。

\n
\n\n

换句话说,如果您从计数开始,您可以循环并根据需要进行切片。

\n\n
cnt = MyObject.objects.count()\nstart_point = 0\ninc = 5\nwhile start_point + inc < cnt:\n    filtered = MyObject.objects.all()[start_point:inc]\n    start_point += inc\n
Run Code Online (Sandbox Code Playgroud)\n\n

当然,您可能需要更多地处理错误。

\n