SQL 문(Python, MySQL)에서 일부 매개 변수가 사용되지 않았습니다.
다음 Python 코드에서 오류가 발생합니다.
import mysql.connector
cnx = mysql.connector.connect(user='root', password='',
host='127.0.0.1',
database='DB')
cursor = cnx.cursor()
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(add_user, data_user)
cnx.commit()
cursor.close()
cnx.close()
에러 메세지는 다음과 같습니다.
mysql.connector.errors.ProgrammingError: Not all parameters were used in the SQL statement
왜 그런지 알겠어요?
파라미터 마커는%s
것은 아니다.%d
.
add_user = """INSERT INTO DB.tbluser
(username, department, startyear, currentpos, link)
VALUES (%s, %s, %s, %s, %s)"""
파라미터 마커는 다음과 같이 사용됩니다.mysql.connector
와 똑같아 보일 수 있습니다.%s
Python 문자열 포맷에서 사용되지만 이 관계는 우연의 일치에 불과합니다.일부 데이터베이스 어댑터는 다음과 같습니다.oursql
그리고.sqlite3
사용하다?
대신 파라미터 마커로서%s
.
자, 다음은 저의 해결책입니다.
%d는 %s의 것이어야 합니다.
''는 여러 줄에 대해 사용할 수 있습니다.또한 행의 선두에 +를 붙이고 마지막에 \를 붙입니다만, 이 문제는 아닙니다.
가끔 커서가 보이기도 해요.execute(숫자, 값) 또는 커서가 표시됩니다.execute(add_user, data_user) 버그가 발생할 수 있습니다.그래서 쿼리에 직접 값을 첨부합니다.
이를 수행하려면 먼저 data_user를 add_user 위로 이동합니다.그런 다음 쿼리 문자열 끝에 %values를 추가합니다(이 경우 %data_user).이를 통해 cursor.exec(add_user) 명령어 앞에 작은 인쇄(add_user)를 만들어 다른 버그를 찾을 수 있습니다.
import mysql.connector
cnx = mysql.connector.connect(
user='root',
password='',
host='127.0.0.1',
database='DB')
cursor = cnx.cursor()
Name = "James"
Department = "Finance"
StartYear = 2001
CurrentPos = 2001
Link = ""
data_user = (Name, Department, StartYear, CurrentPos, Link)
add_user = '''(INSERT INTO DB.tbluser
(username, department, startyear, currentpos, link)
VALUES (%s, %s, %s, %s, %s))'''%data_user
cursor.execute(add_user)
cnx.commit()
cursor.close()
cnx.close()
add_user = ''''("DB.tbluser에 삽입" "("values, department, start year, currentpos, link") "VALUES (%s, %s, %s, %s)"""'''''
=>여러 줄의 문을 사용 중이므로, 여기에 작은 따옴표를 세 개 사용하고 %s을 사용하여 전달 값을 문자열로 나타냅니다.%d는 mysql에서 값을 전달하기 위해 지원되지 않기 때문에 작동합니다.
import mysql.connector
def login(self,name,password):
db = mysql.connector.connect(host="localhost",user="root",passwd="Cyber@123",database="mydata")
if(db):
print("connection successfull")
else:
print("faild")
query = db.cursor()
syntext = """insert into login(use_name,psd) values(%s,%s)"""
value = (name,password)
query.execute(syntext,value)
db.commit()
단일 따옴표를 사용하다
sql = 'insert into Student (id, fname, lname, school) values(%s, %s, %s , %s)'
values = (4, "Gaddafi", "Adamu", "Informatic")
a.execute(sql, values)
mydb.commit()
print(a.rowcount, "record inserted.")
언급URL : https://stackoverflow.com/questions/20818155/not-all-parameters-were-used-in-the-sql-statement-python-mysql
'programing' 카테고리의 다른 글
PHP에서 ereg 식을 preg로 변환하려면 어떻게 해야 하나요? (0) | 2022.10.29 |
---|---|
부울값 스위치/반전 (0) | 2022.10.29 |
현재 날짜에서 일수를 뺀 Laravel Carbon (0) | 2022.10.29 |
Python pip 설치 실패: 잘못된 명령 eg_info (0) | 2022.10.29 |
서브어레이를 열 값으로 그룹화하려면 어떻게 해야 합니까? (0) | 2022.10.29 |