Maison > Article > base de données > Comment les SSCursors dans MySQLDB peuvent-ils améliorer la gestion de la mémoire pour les grands ensembles de résultats ?
La récupération de grands ensembles de résultats peut mettre à rude épreuve les ressources mémoire, en particulier lorsqu'il est essentiel de tous les récupérer immédiatement au démarrage. Bien que l'utilisation de fetchall() avec un curseur de base puisse sembler une solution simple, elle consomme une quantité importante de mémoire. C'est là que les SSCursors (Streaming Result Set Cursors) dans MySQLDB entrent en jeu.
Les SSCursors fournissent un moyen de récupérer les résultats en continu, minimisant ainsi l'utilisation de la mémoire. Ils vous permettent de parcourir les lignes ou par petits lots.
<code class="python">import MySQLdb.cursors connection = MySQLdb.connect( host="thehost", user="theuser", passwd="thepassword", db="thedb", cursorclass=MySQLdb.cursors.SSCursor ) cursor = connection.cursor() cursor.execute(query) for row in cursor: # Process or store the current row</code>
Contrairement à fetchall(), qui charge l'ensemble des résultats en mémoire avant en le renvoyant, les SSCursors activent la récupération incrémentielle des lignes. Cela réduit considérablement la consommation de mémoire et libère des ressources système.
Itérer les résultats d'un SSCursor ligne par ligne ou par petits lots est plus efficace en termes d'utilisation de la mémoire que aller chercher(). La mémoire est allouée uniquement pour les lignes en cours de traitement à un moment donné.
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!