Heim > Datenbank > MySQL-Tutorial > Wie kann ich große SQL-Abfragen in Pandas DataFrames einlesen, ohne dass mir der Speicher ausgeht?

Wie kann ich große SQL-Abfragen in Pandas DataFrames einlesen, ohne dass mir der Speicher ausgeht?

Susan Sarandon
Freigeben: 2025-01-13 09:14:44
Original
881 Leute haben es durchsucht

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

Speicherfehler beim Importieren großer SQL-Abfragen in Pandas DataFrames vermeiden

Die Arbeit mit riesigen SQL-Datenbanken stellt beim Abrufen großer Datensätze oft eine Herausforderung dar. Der Versuch, ganze Tabellen mit mehr als einer Million Zeilen direkt in einen Pandas DataFrame zu laden, kann leicht zu Speicherfehlern führen. Der folgende Code veranschaulicht dieses Problem:

<code class="language-python">import pandas.io.sql as psql
sql = "SELECT TOP 2000000 * FROM MyTable" 
data = psql.read_frame(sql, cnxn)</code>
Nach dem Login kopieren

Diese Methode ist fehleranfällig und führt zu einem „MemoryError“, wenn der resultierende DataFrame den verfügbaren RAM überschreitet.

Pandas bietet seit Version 0.15 eine robuste Lösung: den Parameter chunksize. Dadurch können Sie die SQL-Abfrage in kleineren, überschaubaren Teilen lesen und verarbeiten.

So implementieren Sie diese Lösung:

<code class="language-python">sql = "SELECT * FROM My_Table"
for chunk in pd.read_sql_query(sql , engine, chunksize=5):
    print(chunk)</code>
Nach dem Login kopieren

Durch die Angabe von chunksize ruft Pandas Daten in Inkrementen ab. Jeder Block wird einzeln verarbeitet, wodurch eine Speicherüberlastung verhindert wird. Das obige Beispiel gibt jeden Block aus; Sie können dies anpassen, um bei Bedarf andere Vorgänge für jeden Block auszuführen.

Diese Technik bietet eine praktische und speichereffiziente Möglichkeit, große SQL-Abfragen zu verarbeiten und gewährleistet eine reibungslose Datenverarbeitung auch bei umfangreichen Datensätzen.

Das obige ist der detaillierte Inhalt vonWie kann ich große SQL-Abfragen in Pandas DataFrames einlesen, ohne dass mir der Speicher ausgeht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage