Rumah >pangkalan data >tutorial mysql >Mengapa Penyambung MySQL Python Saya Membuang Ralat \'Belum Dibaca Ditemui\' Apabila Menggunakan `fetchone()`?

Mengapa Penyambung MySQL Python Saya Membuang Ralat \'Belum Dibaca Ditemui\' Apabila Menggunakan `fetchone()`?

Patricia Arquette
Patricia Arquetteasal
2024-11-29 19:30:16131semak imbas

Why Does My Python MySQL Connector Throw an

Penyambung MySQL Python: "Keputusan Belum Dibaca Ditemui" Apabila Menggunakan Fetchone

Apabila memasukkan data JSON yang dihuraikan ke dalam pangkalan data MySQL menggunakan penyambung Python, ralat berlaku: "Hasil belum dibaca ditemui." Ralat ini dikaitkan dengan bahagian kod tertentu.

Dalam coretan kod, satu siri pertanyaan dilaksanakan menggunakan kaedah cursor.execute, diikuti dengan panggilan ke cursor.fetchone untuk mendapatkan satu baris daripada set keputusan. Walau bagaimanapun, apabila kod ini ditambahkan pada atur cara yang lebih besar, pertanyaan berikutnya menggunakan kursor yang sama gagal dengan ralat "Hasil belum dibaca ditemui".

Ralat menunjukkan bahawa terdapat hasil yang tidak dikendalikan daripada pertanyaan sebelumnya. Untuk menyelesaikan isu ini, adalah disyorkan untuk menghabiskan hasil daripada setiap pertanyaan menggunakan kaedah cursor.fetchall. Walau bagaimanapun, percubaan untuk melakukan ini dalam blok try-except untuk mengendalikan mysql.connector.errors.InterfaceError telah terbukti tidak berjaya.

Bahagian khusus kod yang menyebabkan ralat adalah seperti berikut:

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

Untuk menyelesaikan isu ini, parameter penimbal perlu ditetapkan kepada Benar apabila mencipta kursor. Ini memastikan bahawa semua hasil daripada pertanyaan diambil ke dalam penimbal sebelum sebarang pertanyaan berikutnya dilaksanakan.

cursor = cnx.cursor(buffered=True)

Dengan parameter penimbal ditetapkan kepada Benar, ralat "Hasil belum dibaca ditemui" tidak lagi ditemui.

Atas ialah kandungan terperinci Mengapa Penyambung MySQL Python Saya Membuang Ralat \'Belum Dibaca Ditemui\' Apabila Menggunakan `fetchone()`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn