python - оператор MySQLdb Like с подстановочным знаком - PullRequest
0 голосов
/ 24 августа 2018

У меня проблемы с выполнением запроса с подстановочным знаком в нем с MySQLdb в python.

Мой код

sql = "SELECT COUNT(id) FROM table WHERE name LIKE '%s%'"
with con:
    cur.execute(sql, (name,))

Сложным в этом является% после строки% s. Исходя из документации, если бы не было подстановочного оператора%, я мог бы просто сделать LIKE %s, но я не знаю, как поступить оттуда для моей проблемы.

Я нашел этот вопрос в стеке Параметризованный запрос Python MySQL конфликтует с подстановочным знаком% в операторе LIKE , который похож на мой вопрос, но не принимает динамический аргумент. Я попытался экранировать подстановочный оператор, как показано в ссылке выше, но все равно получаю ошибку синтаксиса SQL.

У кого-нибудь есть идеи?

Спасибо

1 Ответ

0 голосов
/ 24 августа 2018

Вы должны поместить подстановочный знак в параметр.

param = '{}%'.format(name)
sql = "SELECT COUNT(id) FROM table WHERE name LIKE %s"
with con:
    cur.execute(sql, (param,))

Обратите внимание, вы не должны использовать кавычки для заполнителя внутри SQL;те добавлены DB-API.

...