Rumah > pangkalan data > tutorial mysql > Mengapa Kod MySQL Python Saya Melemparkan Ralat 'Tidak Semua Parameter Digunakan dalam Pernyataan SQL'?

Mengapa Kod MySQL Python Saya Melemparkan Ralat 'Tidak Semua Parameter Digunakan dalam Pernyataan SQL'?

DDD
Lepaskan: 2025-01-06 20:27:43
asal
871 orang telah melayarinya

Why Does My Python MySQL Code Throw a

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

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

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!

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