Запрос модели Django при превышении max_allowed_packet в MySQL

Поэтому у меня есть эта периодическая задача - отправлять пользователю автоматический отчет каждый месяц. Проблема, с которой я столкнулся при создании данных отчета, заключалась в том, что MySQL DB имеет тонны данных отчета для каждого пользователя, поэтому, когда я пытаюсь сделать запрос по модели User, я получаю OperationalError: (1153, "Got a packet bigger than 'max_allowed_packet' bytes"),

Я вошел в dbshell и проверьте, какая настройка для этой переменной, и это максимально допустимое значение (1 ГБ).

Так что я в основном застрял здесь. Есть ли способ получить все данные, не нажимая, что OperationalError?

Код выглядит следующим образом (я ввел фиктивные имена, поскольку не могу раскрыть информацию о компании) -

user_ids = list(Model1.objects.filter(param=param_value).values_list('user_id', flat=True)) # returns 143992 user_ids
users = User.objects.filter(user_id__in=user_ids)

Затем я пытаюсь перебрать users, но я ударил OperationalError,

Я также попытался разделить набор запросов так -

slices = []
step = 1000
while True:
    sliced_queryset = users[step-1000:step]
    slices.append(sliced_queryset)
    step += 1000
    if sliced_queryset.count() < 1000:
        break

Но я ударил ту же ошибку для .count(),

0 ответов

Другие вопросы по тегам