Lorsque vous travaillez avec des ensembles de résultats massifs dans des bases de données MySQL, la consommation de mémoire peut devenir un problème. La bibliothèque MySQLDB propose la classe SScursor pour atténuer ce problème, offrant ainsi un moyen plus efficace de gérer de gros volumes de données.
Utilisation de la mémoire de fetchall()
Contrairement aux méthodes populaires Croyez-moi, l'exécution de fetchall() sur les curseurs de base et sur SScursors consomme la même quantité de mémoire. Il alloue des tampons suffisamment grands pour contenir l'ensemble des résultats en mémoire.
Streaming avec SScursor
La force de SScursors réside dans sa capacité à parcourir les résultats sans charger le l’intégralité de l’ensemble de données en mémoire. Pour réaliser un streaming avec un SScursor :
<code class="python">def stream_rows(cursor): for row in cursor: yield row</code>
<code class="python">for row in cursor: # Process row</code>
Méthode de streaming la plus efficace
La méthode de streaming la plus efficace consiste à utiliser un générateur car elle évite la surcharge d'une boucle supplémentaire. Le générateur peut être transmis à d'autres fonctions ou utilisé directement pour des opérations de traitement et de filtrage.
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!