Невозможно выполнить итерацию по всем объектам в таблице с помощью 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):
...
Используется бэкенд Касснадры: django-Cassandra-engine версия 1.6.2
По умолчанию размер выборки (он же размер страницы) составляет 10K, поэтому вы получите только первые 10K строк. Если вы действительно хотите получить все записи в таблице, вам нужно переопределить параметры сессии по умолчанию:
'cassandra': {
...
'OPTIONS': {
...
'session': {
...
'default_fetch_size': 10000
}
}
}
Но будьте осторожны с установкой очень высокого значения, поскольку это может перегрузить узел-координатор запроса и повлиять на производительность вашего кластера.
Вместо этого вам следует перебирать результаты на странице, затем запрашивать следующую страницу, пока не достигнете конца. Будьте здоровы!