无法使用 objects.all() 遍历 table 中的所有对象

Unable to iterate over all objects in table using objects.all()

我正在编写一个迁移脚本,它将遍历 cassandra 模型 (Cats) 的所有对象。 Cat 有 30000 多个对象,但使用 Cats.objects.all(),我只能迭代 10000 多个对象。

qs = Cats.objects.all()

print(qs.count()) # returns 30000
print(len(qs)) # returns 10000

型号:

from django_cassandra_engine.models import DjangoCassandraModel


class Cats(DjangoCassandraModel):
    ...

使用的 Cassnadra 后端django-Cassandra-engine 版本 1.6.2

默认提取大小(也称为页面大小)为 10K,因此您只会返回前 10K 行。如果你真的想获取 table 中的所有记录,你需要覆盖会话默认值:

        'cassandra': {
            ...
            'OPTIONS': {
                ...
                'session': {
                    ...
                    'default_fetch_size': 10000
                }
            }
        }

但要小心将其设置为非常高的值,因为它会使请求的协调器节点过载并影响集群的性能。

您应该改为遍历页面中的结果,然后请求下一页,直到到达末尾。干杯!