Tidak Semua Parameter Digunakan dalam Pernyataan MySQL: Penyelesaian Masalah dalam Python
Pengenalan
Apabila melaksanakan Pertanyaan SQL menggunakan Python dan perpustakaan mysql.connector, adalah penting untuk menyelaraskan parameter penanda dalam pernyataan SQL dengan data yang dihantar ke kursor. Kegagalan berbuat demikian boleh mengakibatkan ralat "Tidak semua parameter digunakan dalam pernyataan SQL".
Ralat Ditemui
Pertimbangkan coretan kod berikut:
import mysql.connector Name = "James" Department = "Finance" StartYear = 2001 CurrentPos = 2001 Link = "" add_user = ("INSERT INTO DB.tbluser " "(username, department, startyear, currentpos, link) " "VALUES (%s, %s, %d, %d, %s)") data_user = (Name, Department, StartYear, CurrentPos, Link)
Melaksanakan kod ini dengan kaedah cursor.execute() akan mencetuskan "Tidak semua parameter telah digunakan dalam ralat pernyataan SQL.
Analisis
Ralat timbul kerana penanda parameter untuk medan StartYear dan CurrentPos tidak betul. Penanda %d digunakan untuk integer, manakala pernyataan SQL menentukan %s penanda untuk semua parameter.
Penyelesaian
Untuk menyelesaikan ralat, penanda %d harus digantikan dengan %s penanda:
add_user = """INSERT INTO DB.tbluser (username, department, startyear, currentpos, link) VALUES (%s, %s, %s, %s, %s)"""
Perubahan ini memastikan semua parameter diwakili dengan betul dalam pernyataan SQL dan boleh diikat dengan betul kepada data yang dihantar ke kursor.
Nota
Walaupun penanda parameter dalam mysql.connector menyerupai %s yang digunakan dalam Python pemformatan rentetan, kedua-dua sintaks adalah berbeza. Penyesuai pangkalan data lain mungkin menggunakan penanda parameter yang berbeza, seperti ? dalam oursql dan sqlite3.
Atas ialah kandungan terperinci Mengapa Kod MySQL Python Saya Melemparkan Ralat 'Tidak Semua Parameter Digunakan dalam Pernyataan SQL'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!