Python MySQL: Menyelesaikan Ralat "Commands Out of Sync" Semasa Melaksanakan Prosedur Tersimpan
Dalam pengaturcaraan Python, apabila menggunakan Django untuk melaksanakan prosedur tersimpan dalam pangkalan data MySQL, sesetengah pengguna menemui "perintah tidak segerak; anda tidak boleh menjalankan arahan ini now" semasa cuba melaksanakan penyataan berikutnya selepas memanggil prosedur.
Ralat ini biasanya timbul apabila cuba melaksanakan penyataan bukan pilihan (cth., kemas kini atau operasi padam) berikutan panggilan prosedur tanpa melakukan komitmen tindakan.
Pertimbangkan contoh kod berikut:
cursor.callproc('my_mysql_procedure', [some_id,]) result = cursor.fetchall() for r in result: do something cursor.execute("select * from some_table") result = cursor.fetchall()
Selepas melaksanakan prosedur yang disimpan, sambungan menjadi "tidak segerak" jika operasi bukan pilihan dicuba tanpa menutup dan membuka semula kursor terlebih dahulu.
Untuk menyelesaikan isu ini, disyorkan untuk menutup kursor dengan segera selepas mendapatkan semula keputusan daripada prosedur yang disimpan:
cursor.close() cursor = connection.cursor()
Membuka semula kursor baharu memastikan sambungan ditetapkan semula dan disegerakkan dengan betul, membenarkan pernyataan seterusnya dilaksanakan seperti yang dimaksudkan. Adalah penting untuk ambil perhatian bahawa set hasil yang diperoleh daripada panggilan prosedur kekal boleh diakses selepas menutup kursor.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat \'Arahan Tidak Segerak\' Apabila Menggunakan Prosedur Tersimpan Python dan MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!