>데이터 베이스 >MySQL 튜토리얼 >내 Python MySQL 코드에서 'SQL 문에 모든 매개변수가 사용되지 않았습니다' 오류가 발생하는 이유는 무엇입니까?

내 Python MySQL 코드에서 'SQL 문에 모든 매개변수가 사용되지 않았습니다' 오류가 발생하는 이유는 무엇입니까?

DDD
DDD원래의
2025-01-06 20:27:43875검색

Why Does My Python MySQL Code Throw a

MySQL 문에 모든 매개변수가 사용되지 않음: Python 문제 해결

소개

실행 시 Python 및 mysql.connector 라이브러리를 사용하는 SQL 쿼리에서는 SQL 문의 매개변수 표시자를 커서에 전달된 데이터입니다. 그렇지 않으면 "SQL 문에 모든 매개 변수가 사용되지 않았습니다." 오류가 발생할 수 있습니다.

오류 발생

다음 코드 조각을 고려하세요.

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)

cursor.execute() 메소드를 사용하여 이 코드를 실행하면 "SQL에서 모든 매개변수가 사용되지 않았습니다. 문" 오류입니다.

분석

StartYear 및 CurrentPos 필드에 대한 매개 변수 표시가 올바르지 않기 때문에 오류가 발생합니다. %d 마커는 정수에 사용되는 반면 SQL 문은 모든 매개변수에 대해 %s 마커를 지정합니다.

해결책

오류를 해결하려면 %d 마커를 사용해야 합니다. %s 마커로 대체:

add_user = """INSERT INTO DB.tbluser 
              (username, department, startyear, currentpos, link) 
              VALUES (%s, %s, %s, %s, %s)"""

이 변경을 통해 모든 매개변수가 SQL 문에 올바르게 표시되고 올바르게 바인딩될 수 있습니다. 커서에 전달된 데이터에.

참고

mysql.connector의 매개변수 표시가 Python 문자열 형식화에 사용되는 %s와 유사하지만 두 구문은 서로 다릅니다. . 다른 데이터베이스 어댑터는 ?와 같은 다른 매개변수 표시자를 사용할 수 있습니다. oursql과 sqlite3에서.

위 내용은 내 Python MySQL 코드에서 'SQL 문에 모든 매개변수가 사용되지 않았습니다' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.