Rumah > Artikel > pangkalan data > Mengapa Saya Mendapat "Ralat Sintaks SQL" Apabila Menggunakan Pernyataan Disediakan dalam Python dengan MySQL?
Menggunakan Penyata Disediakan dengan MySQL dalam Python: Menjelaskan Sintaks dan Mengelak Ralat
Anda menghadapi ralat semasa menggunakan pernyataan yang disediakan dengan MySQL dalam Python, dengan mesej "'Anda mempunyai ralat dalam sintaks SQL anda'". Mari kita periksa kod yang anda berikan dan kenal pasti isu tersebut.
Kod yang anda gunakan untuk menyediakan penyata kelihatan betul, tetapi pelaksanaan penyata seterusnya mengandungi ralat. Khususnya, kod dalam gelung nampaknya menggunakan parameter dengan sintaks yang berbeza daripada jangkaan pernyataan yang disediakan.
sql = "EXECUTE stmt USING \'{}\', \'{}\', {}, {};".format(d, t, tag, power)
Dalam contoh yang diberikan oleh jawapan, pendekatan yang lebih cekap menggunakan modul MySQLdb Python dicadangkan:
sql = ('INSERT INTO {} (date, time, tag, power) VALUES ' '(%s, %s, %s, %s)'.format(self.db_scan_table)) self.cursor.execute(sql, (d, t, tag, power))
Di sini, ruang letak untuk nilai (%s) ditentukan terus dalam rentetan pertanyaan SQL dan nilai sebenar ialah diluluskan sebagai tupel dalam panggilan laksana. Ini menghapuskan keperluan untuk pemformatan rentetan dalam peringkat pelaksanaan, yang mungkin menyebabkan ralat sintaks dalam kod anda.
Sebagai alternatif, anda boleh menggunakan Penyambung/Python MySQL sendiri dengan pilihan prepare=True dalam kursor() kilang, yang lebih cekap dan jelas daripada menggunakan penyata SEDIA dan LAKSANAKAN.
Atas ialah kandungan terperinci Mengapa Saya Mendapat "Ralat Sintaks SQL" Apabila Menggunakan Pernyataan Disediakan dalam Python dengan MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!