Mendapatkan semula set hasil yang besar boleh memberi tekanan pada sumber memori, terutamanya apabila penting untuk mengambil kesemuanya sekali gus semasa permulaan. Semasa menggunakan fetchall() dengan kursor asas mungkin kelihatan seperti penyelesaian yang mudah, ia menggunakan sejumlah besar memori. Di sinilah SSCursors (Streaming Result Set Cursors) dalam MySQLDB mula dimainkan.
SSCursors menyediakan cara untuk mendapatkan semula hasil dalam fesyen penstriman, meminimumkan penggunaan memori. Ia membenarkan anda mengulangi baris逐行地 atau dalam kelompok kecil.
<code class="python">import MySQLdb.cursors connection = MySQLdb.connect( host="thehost", user="theuser", passwd="thepassword", db="thedb", cursorclass=MySQLdb.cursors.SSCursor ) cursor = connection.cursor() cursor.execute(query) for row in cursor: # Process or store the current row</code>
Tidak seperti fetchall(), yang memuatkan keseluruhan keputusan yang ditetapkan ke dalam memori sebelum ini mengembalikannya, SSCursors mendayakan pengambilan baris secara berperingkat. Ini mengurangkan penggunaan memori dengan ketara dan membebaskan sumber sistem.
Membalas keputusan SSCursor baris demi baris atau dalam kelompok kecil adalah lebih cekap dari segi penggunaan memori berbanding untuk mengambil (). Memori diperuntukkan hanya untuk baris yang diproses pada bila-bila masa.
Atas ialah kandungan terperinci Bagaimanakah SSCursor dalam MySQLDB Boleh Meningkatkan Pengurusan Memori untuk Set Hasil Besar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!