Mengelakkan Ralat Memori Semasa Mengimport Pertanyaan SQL Besar ke dalam Pandas DataFrames
Bekerja dengan pangkalan data SQL yang besar selalunya memberikan cabaran apabila mendapatkan set data yang besar. Percubaan untuk memuatkan keseluruhan jadual melebihi sejuta baris terus ke dalam Pandas DataFrame boleh membawa kepada ralat ingatan dengan mudah. Kod berikut menggambarkan masalah ini:
<code class="language-python">import pandas.io.sql as psql sql = "SELECT TOP 2000000 * FROM MyTable" data = psql.read_frame(sql, cnxn)</code>
Kaedah ini terdedah kepada kegagalan, mengakibatkan "MemoryError" jika DataFrame yang terhasil melebihi RAM yang tersedia.
Panda, sejak versi 0.15, menawarkan penyelesaian yang mantap: parameter chunksize
. Ini membolehkan anda membaca dan memproses pertanyaan SQL dalam bahagian yang lebih kecil dan boleh diurus.
Berikut ialah cara untuk melaksanakan penyelesaian ini:
<code class="language-python">sql = "SELECT * FROM My_Table" for chunk in pd.read_sql_query(sql , engine, chunksize=5): print(chunk)</code>
Dengan menyatakan chunksize
, Pandas mendapatkan semula data secara berperingkat. Setiap bahagian diproses secara individu, mengelakkan beban memori. Contoh di atas mencetak setiap ketul; anda boleh menyesuaikan ini untuk melaksanakan operasi lain pada setiap bahagian mengikut keperluan.
Teknik ini menyediakan cara yang praktikal dan cekap ingatan untuk mengendalikan pertanyaan SQL yang besar, memastikan pemprosesan data yang lancar walaupun dengan set data yang banyak.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membaca Pertanyaan SQL Besar ke dalam Pandas DataFrames Tanpa Kehabisan Memori?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!