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