У меня есть таблица MySQL MySQL размером 10 МБ, с которой я взаимодействую с использованием SqlAlchemy. Я обнаружил, что запросы на большие подмножества этой таблицы будут потреблять слишком много памяти, даже если я думал, что использую встроенный генератор, который интеллектуально извлекал куски размера набора данных:
for thing in session.query(Things):
analyze(thing)
Чтобы этого избежать, я считаю, что мне нужно создать собственный итератор, который откусывает куски:
lastThingID = None
while True:
things = query.filter(Thing.id < lastThingID).limit(querySize).all()
if not rows or len(rows) == 0:
break
for thing in things:
lastThingID = row.id
analyze(thing)
Является ли это нормальным или есть что-то, что мне не хватает в встроенных генераторах SA?
Ответ на этот вопрос, по-видимому, указывает на то, что потребление памяти не ожидается.