デフォルトのMySQLdb
カーソルは、サーバーからクエリ結果全体を一度にフェッチします。このデータをPythonのタプルリストに変換すると、多くのメモリと時間が消費される可能性があります。
MySQLdb.cursors.SSCursor
を使用します 巨大なクエリを作成し、サーバーから一度に1つずつ結果を取得する場合。ただし、SSCursorを使用する場合は、他にはないことに注意してください。クエリを実行できます
connection
で 結果セット全体がフェッチされるまで。
import MySQLdb
import MySQLdb.cursors as cursors
connection = MySQLdb.connect(
...
cursorclass = cursors.SSCursor)
cursor = connection.cursor()
cursor.execute(query)
for row in cursor:
...
または、oursql を使用します 、MySQLの代替Pythonドライバー。 oursqlの機能の1つは、行を遅延フェッチする> 。