Maison > base de données > tutoriel mysql > Comment puis-je lire des requêtes SQL volumineuses dans des DataFrames Pandas sans manquer de mémoire ?

Comment puis-je lire des requêtes SQL volumineuses dans des DataFrames Pandas sans manquer de mémoire ?

Susan Sarandon
Libérer: 2025-01-13 09:14:44
original
881 Les gens l'ont consulté

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

Éviter les erreurs de mémoire lors de l'importation de requêtes SQL volumineuses dans des DataFrames Pandas

Travailler avec des bases de données SQL massives présente souvent des défis lors de la récupération de grands ensembles de données. Tenter de charger des tables entières dépassant un million de lignes directement dans un Pandas DataFrame peut facilement entraîner des erreurs de mémoire. Le code suivant illustre ce problème :

<code class="language-python">import pandas.io.sql as psql
sql = "SELECT TOP 2000000 * FROM MyTable" 
data = psql.read_frame(sql, cnxn)</code>
Copier après la connexion

Cette méthode est sujette à l'échec, entraînant une "MemoryError" si le DataFrame résultant dépasse la RAM disponible.

Pandas, depuis la version 0.15, propose une solution robuste : le paramètre chunksize. Cela vous permet de lire et de traiter la requête SQL en portions plus petites et gérables.

Voici comment mettre en œuvre cette solution :

<code class="language-python">sql = "SELECT * FROM My_Table"
for chunk in pd.read_sql_query(sql , engine, chunksize=5):
    print(chunk)</code>
Copier après la connexion

En spécifiant chunksize, Pandas récupère les données par incréments. Chaque morceau est traité individuellement, évitant ainsi la surcharge de la mémoire. L'exemple ci-dessus imprime chaque morceau ; vous pouvez l'adapter pour effectuer d'autres opérations sur chaque morceau selon vos besoins.

Cette technique offre un moyen pratique et économe en mémoire de gérer des requêtes SQL volumineuses, garantissant un traitement fluide des données, même avec des ensembles de données importants.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal