Подтвердить что ты не робот

Python mySQL - экранирование кавычек

Я рассматривал этот вопрос по-разному на этом сайте, но ни один из них не рассматривал мою проблему.

У меня есть оператор sql с одинарными кавычками внутри него, и я пытаюсь использовать рекомендуемые методы, прежде чем делать с ним запросы к базе данных. Итак, утверждение похоже на

val2="abc 'dostuff'" 
sql="INSERT INTO TABLE_A(COL_A,COL_B) VALUES(%s,'%s')" %(val1, val2)
a_cursor.execute(sql)

Однако, когда я запускаю это, я получаю..

ProgrammingError: (1064,"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 'dostuff'.

Что я делаю неправильно? Огромное спасибо Nupur

4b9b3361

Ответ 1

Используйте параметры вместо строковой интерполяции, чтобы гарантировать, что ваши значения будут правильно экранированы соединителем базы данных:

sql = "INSERT INTO TABLE_A(COL_A,COL_B) VALUES(%s, %s)"
a_cursor.execute(sql, (val1, val2))

В стиле mysqldb sql используется тот же синтаксис, который используется оператором форматирования строки python, что немного запутывает.