É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>
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>
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!