一度に全部の行をDBから取得するとメモリが足りなくなる場合。 以下のようにstream_results=Trueオプションを付けると何行かずつ取得してforループを回してくれる。
import sqlalchemy
engine = sqlalchemy.create_engine('mysql+pymysql://user:pass@host/db')
connection = engine.connect()
results = connection.execution_options(stream_results=True).execute(
'select * from large_table'
)
for result in results:
process_result(result)
参考: