Rumah >pangkalan data >tutorial mysql >Mengapakah `fetchone()` Menyebabkan \'Keputusan Belum Dibaca Ditemui\' dalam Penyambung MySQL Python, dan Bagaimana Kursor Penimbal Boleh Membetulkannya?
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!