Maison > base de données > tutoriel mysql > Pourquoi mon connecteur Python MySQL génère-t-il une erreur « Résultat non lu trouvé » lors de l'utilisation de « fetchone() » ?

Pourquoi mon connecteur Python MySQL génère-t-il une erreur « Résultat non lu trouvé » lors de l'utilisation de « fetchone() » ?

Patricia Arquette
Libérer: 2024-11-29 19:30:16
original
172 Les gens l'ont consulté

Why Does My Python MySQL Connector Throw an

Connecteur Python MySQL : "Résultat non lu trouvé" lors de l'utilisation de Fetchone

Lors de l'insertion de données JSON analysées dans une base de données MySQL à l'aide du connecteur Python, une erreur se produit : "Résultat non lu trouvé." Cette erreur est associée à une section particulière de code.

Dans l'extrait de code, une série de requêtes est exécutée à l'aide de la méthode curseur.execute, suivie d'un appel à curseur.fetchone pour récupérer une seule ligne du ensemble de résultats. Cependant, lorsque ce code est ajouté à un programme plus volumineux, les requêtes suivantes utilisant le même curseur échouent avec l'erreur « Résultat non lu trouvé ».

L'erreur suggère qu'il existe des résultats non gérés des requêtes précédentes. Pour résoudre ce problème, il est recommandé d'épuiser les résultats de chaque requête à l'aide de la méthode curseur.fetchall. Cependant, les tentatives visant à le faire dans un bloc try-sauf pour gérer l'erreur mysql.connector.errors.InterfaceError se sont révélées infructueuses.

La section spécifique du code à l'origine de l'erreur est la suivante :

cursor.execute(query,(travel_mode, Orig_lat, Orig_lng, Dest_lat, Dest_lng, time_stamp))
leg_no = cursor.fetchone()[0]
try:
    cursor.fetchall()
except mysql.connector.errors.InterfaceError as ie:
    if ie.msg == 'No result set to fetch from.':
        pass
    else:
        raise
cursor.execute(query,(leg_travel_mode, leg_Orig_lat, leg_Orig_lng, leg_Dest_lat, leg_Dest_lng, time_stamp))
Copier après la connexion

Pour résoudre le problème, il est nécessaire de définir le paramètre buffered sur True lors de la création du curseur. Cela garantit que tous les résultats d'une requête sont récupérés dans un tampon avant que les requêtes suivantes ne soient exécutées.

cursor = cnx.cursor(buffered=True)
Copier après la connexion

Avec le paramètre buffered défini sur True, l'erreur « Résultat non lu trouvé » n'est plus rencontrée.

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