У меня есть инструкция SQL для использования в базе данных MySQL в моем коде Python3. Код выглядит следующим образом:
price = "1"
high = "2"
low = "3"
mycursor.execute("""
UPDATE
currency_price_fact
SET
%s = %s,
%s = %s,
%s = %s
WHERE currency_symbol = 'USD_gov'
""",(price,dict["USD_gov"]["p"].replace(",",""),high,dict["USD_gov"]["h"].replace(",",""),low,dict["USD_gov"]["l"].replace(",",""),))
Но я получаю сообщение об ошибке
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
Я думаю, что знаю, что здесь происходит, я передаю '1' = '4432' вместо 1 = '4432', но я не знаю, как это решить.
Попробуйте SET price = %s вместо SET %s = %s и соответствующим образом измените аргументы.
Вы не можете использовать параметризацию для имен полей, только для значений. Вам нужно построить запрос в два этапа: задать имена полей с форматированием строк (и убедиться, что у вас есть какой-то процесс очистки для этого), а затем использовать параметризацию значений.
Перед выполнением курсора сначала распечатайте оператор с помощью команды печати в коде, чтобы получить полный оператор mysql, чтобы проверить оператор.
@Suresh, ты не можешь этого сделать. Это не обычная строковая интерполяция.






1 = '4432'также не является допустимым предложением о множестве. Можете ли вы подробнее рассказать о том, чего именно вы пытаетесь достичь?