사용자 정보가 들어있는 데이터베이스를 쿼리하기로되어있는 기본 프로그램이 있습니다. 특정 사용자의 정보를 선택하여 콘솔로 출력하려고합니다. 나중에 내가 Tkinter를 입력 상자에서 사용자 이름을 얻기 계획 때문에이 변수에 저장된 사용자 이름이% s가있는 Python MySQL Connector 데이터베이스 쿼리가 실패합니다.
import mysql.connector
funcon = mysql.connector.connect(user='root', password='pass', host='127.0.0.1', database='fundata')
funcursor = funcon.cursor()
query = ("SELECT * FROM funtable WHERE userName=%s")
uName = 'user1'
funcursor.execute(query, uName)
for (userName) in funcursor:
print("{}".format(userName))
:
여기 내 코드입니다. 나는 %의 쿼리에 따옴표를 넣어 시도했지만 그때는 말 그대로 사용자 이름 '% s'이 (가) 검색하고 아무 것도 반환하지 않습니다
mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%s' at line 1
:이 코드를 실행하면 나는 다음과 같은 오류가 발생합니다. 이 사용자 만 데이터베이스를 쿼리 할 수 있도록 코드를 어떻게 변경합니까?
감사합니다.
참고 : 저는 python 3.3을 사용하고 있습니다.
대단히 감사합니다. 이것은 효과가 있었다. 그래도 쉼표가 필요한 이유를 설명해 주시겠습니까? 쉼표없이 시도하고 같은 오류가 발생했습니다. –
'execute'은 두 번째 인자로 값의리스트 나 튜플을 기대하기 때문입니다. 쉼표는 그 자리에서 튜플을 생성하므로 함수의 요구 사항을 다룹니다. 'execute'는 그것을 읽기 전에 쿼리에서 얼마나 많은 문자열을 대체해야 하는지를 알지 못하며, 쿼리를 두 번 읽는 것을 원하지 않습니다. 그래서 그것은 당신에게 질의를 한 다음 문자열의리스트 또는 튜플을 묻습니다. 한 문자열 만 바꾸려는 경우에도이를 전달하기 전에 목록이나 터플로 만들어야합니다. – huu
OK. 도와 주셔서 감사합니다. –