Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Membaca Pertanyaan SQL Besar ke dalam Pandas DataFrames Tanpa Kehabisan Memori?

Bagaimanakah Saya Boleh Membaca Pertanyaan SQL Besar ke dalam Pandas DataFrames Tanpa Kehabisan Memori?

Susan Sarandon
Susan Sarandonasal
2025-01-13 09:14:44890semak imbas

How Can I Read Large SQL Queries into Pandas DataFrames Without Running Out of Memory?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn