Запрос базы данных Python MySQL Connector с ошибкой%s
У меня есть базовая программа, которая должна запрашивать базу данных, которая содержит информацию о пользователе. Я пытаюсь выбрать информацию для конкретного пользователя и распечатать ее на консоли.
Вот мой код:
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))
У меня имя пользователя хранится в переменной, потому что позже я планирую получить имя пользователя из поля ввода tkinter. Когда я выполняю этот код, я получаю следующую ошибку:
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
Я попытался поместить%s в кавычки в запросе, но затем он буквально ищет имена пользователей "%s" и ничего не возвращает. Как я могу изменить свой код, чтобы я мог запрашивать базу данных только для этого пользователя?
Спасибо.
К вашему сведению: я использую python 3.3.
1 ответ
Измени свой funcursor.execute(query, uName)
позвонить:
funcursor.execute(query, (uName, ))
Второй аргумент в execute
принимает список / кортеж строк, а не строку. Вышеуказанный вызов создает кортеж перед передачей в строку execute
так что никакой ошибки не выдается.
Причина по которой execute
принимает список / кортеж строк, потому что он не знает заранее, сколько строк ему нужно для того, чтобы удовлетворить ваш запрос.