Mengambil Keputusan daripada Prosedur Tersimpan menggunakan Kursor Python
Artikel ini menangani isu mendapatkan semula hasil daripada panggilan prosedur tersimpan MySQL menggunakan Python kursor. Walaupun sambungan berjaya ke pangkalan data dan penggunaan cursor.execute() pada pertanyaan SQL biasa, cuba untuk mengambil keputusan daripada panggilan prosedur yang disimpan menggunakan cursor.fetchall() atau cursor.fetchone() mengembalikan ralat: "mysql. connector.errors.InterfaceError: Tiada keputusan ditetapkan untuk diambil daripada."
Penyelesaian
Penyelesaian terletak pada mendapatkan semula set keputusan menggunakan cursor.stored_results(). Kaedah ini berulang melalui mana-mana set keputusan yang tersedia, membenarkan pengaturcara bekerja dengan set keputusan yang dikehendaki.
Kod berikut menunjukkan pendekatan yang betul:
import mysql.connector cnx = mysql.connector.connect(user='root', host='127.0.0.1', database='mytestdb') cnx._open_connection() cursor = cnx.cursor() cursor.callproc("getperson", [1]) for result in cursor.stored_results(): people = result.fetchall() for person in people: print(person) cnx.close()
Kod ini berjaya mengambil keputusan daripada yang disimpan prosedur tanpa menghadapi ralat.
Pertimbangan
Ia perlu diperhatikan bahawa penyambung MySQL Python boleh memperuntukkan berbilang set hasil walaupun tanpa ketiadaan kenyataan SELECT berbilang. Peruntukan ini boleh berlaku kerana kemasukan pembolehubah INOUT dan OUT dalam prosedur tersimpan, yang anda tidak miliki. Namun begitu, menggunakan cursor.stored_results() mengendalikan potensi peruntukan ini dengan berkesan dan membolehkan perolehan semula hasil yang berjaya.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Keputusan daripada Prosedur Tersimpan MySQL menggunakan `cursor.stored_results()` Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!