Connecteur Python MySQL : résultat non lu trouvé lors de l'utilisation de fetchone
Cette question concerne un problème rencontré lors de l'insertion de données JSON dans une base de données MySQL à l'aide le connecteur Python MySQL. Lors de l'insertion de détails de niveau supérieur et de la tentative d'associer des informations de niveau inférieur au parent en fonction des coordonnées d'origine et de destination et de l'horodatage, le code échouerait avec l'erreur « Résultat non lu trouvé ».
La requête utilisée pour la recherche pour le numéro d'étape unique pour chaque ensemble de coordonnées et l'horodatage est :
query = ('SELECT leg_no FROM leg_data WHERE travel_mode = %s AND Orig_lat = %s AND Orig_lng = %s AND Dest_lat = %s AND Dest_lng = %s AND time_stamp = %s')
Initialement, une tentative a été faite pour supprimer tout élément non lu résultats :
cursor.execute(query,(leg_travel_mode, leg_Orig_lat, leg_Orig_lng, leg_Dest_lat, leg_Dest_lng)) 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))
Cependant, l'erreur a persisté.
Après une enquête plus approfondie, il a été découvert que la solution réside dans la spécification d'un curseur tamponné. L'ajout de buffered=True à la ligne d'initialisation du curseur a résolu le problème :
cursor = cnx.cursor(buffered=True)
Cela garantit que toutes les lignes sont récupérées en arrière-plan, empêchant ainsi l'erreur de se produire.
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!