Rumah >pangkalan data >tutorial mysql >Mengapakah `fetchone()` Menyebabkan \'Keputusan Belum Dibaca Ditemui\' dalam Penyambung MySQL Python, dan Bagaimana Kursor Penimbal Boleh Membetulkannya?

Mengapakah `fetchone()` Menyebabkan \'Keputusan Belum Dibaca Ditemui\' dalam Penyambung MySQL Python, dan Bagaimana Kursor Penimbal Boleh Membetulkannya?

DDD
DDDasal
2024-11-27 10:32:10323semak imbas

Why Does `fetchone()` Cause

Python MySQL Connector: Keputusan Belum Dibaca Ditemui Semasa Menggunakan fetchone

Soalan ini berkaitan dengan isu yang dihadapi semasa memasukkan data JSON ke dalam pangkalan data MySQL menggunakan penyambung Python MySQL. Apabila memasukkan butiran peringkat lebih tinggi dan cuba mengaitkan maklumat peringkat rendah dengan induk berdasarkan koordinat asal dan destinasi serta cap masa, kod tersebut akan gagal dengan ralat "Hasil belum dibaca ditemui."

Pertanyaan yang digunakan untuk mencari untuk nombor kaki unik bagi setiap set koordinat dan cap_masa ialah:

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

Pada mulanya, percubaan telah dibuat untuk membuang mana-mana yang belum dibaca keputusan:

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

Walau bagaimanapun, ralat berterusan.

Setelah penyiasatan lanjut, didapati bahawa penyelesaiannya terletak pada menentukan kursor penimbal. Menambah buffered=Teguh pada baris permulaan kursor telah menyelesaikan isu:

cursor = cnx.cursor(buffered=True)

Ini memastikan semua baris diambil di belakang tabir, menghalang ralat daripada berlaku.

Atas ialah kandungan terperinci Mengapakah `fetchone()` Menyebabkan \'Keputusan Belum Dibaca Ditemui\' dalam Penyambung MySQL Python, dan Bagaimana Kursor Penimbal Boleh Membetulkannya?. 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