Mengapa Saya Mendapat 'Ralat Sintaks SQL' Apabila Menggunakan Pernyataan Disediakan dalam Python dengan MySQL?

DDD
Lepaskan: 2024-11-07 16:51:03
asal
860 orang telah melayarinya

Why Am I Getting a

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)
Salin selepas log masuk

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))
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan