一度に全部の行を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)
参考: