Maison > base de données > tutoriel mysql > le corps du texte

Pourquoi ma requête Python MySQL continue-t-elle de renvoyer les mêmes données ?

Linda Hamilton
Libérer: 2024-11-06 12:29:02
original
660 Les gens l'ont consulté

Why Does My Python MySQL Query Keep Returning the Same Data?

Requêtes sur MySQL à partir de Python produisant des données identiques

Interroger à plusieurs reprises une base de données MySQL à partir de Python pour récupérer des données dynamiques pose un défi. Il est connu que le simple fait de parcourir une requête dans une boucle ne suffit pas pour récupérer de nouvelles données de la base de données.

Le code fourni illustre ce problème :

<code class="python">for i in range(listSize):
    #...
    mycursor = mydb.cursor(dictionary=True)
    mycursor.execute(sql)
    #...</code>
Copier après la connexion

Même avec des tentatives utilisant fetchall , fetchmany et fetchone, les résultats restent stagnants.

La solution : valider la connexion

Pour résoudre ce problème, chaque exécution de requête doit être suivie d'une validation du connexion. Cette action conclut la transaction en cours et en initie une nouvelle, permettant à la requête suivante de détecter les modifications apportées lors de la transaction précédente.

<code class="python">while True:
    #...
    mycursor = mydb.cursor(dictionary=True)
    mycursor.execute(sql)
    #...
    mydb.commit()
    #...</code>
Copier après la connexion

Niveaux d'isolement et valeur par défaut REPEATABLE READ

Ce concept est ancré dans les niveaux d’isolement. Par défaut, MySQL utilise REPEATABLE READ pour InnoDB. Cela implique qu'au sein d'une transaction, les lectures ultérieures conserveront l'instantané établi par la lecture initiale de la transaction. Par conséquent, sans engagement, les requêtes ultérieures ne captureront aucune modification.

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