Как избежать% в запросе с использованием python sqlalchemy execute() и pymysql?
Мой запрос:
result = connection.execute(
"select id_number from Table where string like '_stringStart%' limit 1;")
дает ошибку:
query = query % escaped_args
TypeError: not enough arguments for format string
Быстрый google сказал использовать %% вместо%, но это тоже не работает. Как мне избежать% или есть другой способ запроса строки, которая начинается со случайной буквы, а затем определенной последовательности?
Ответы
Ответ 1
Так как это буквальная строка, вам лучше использовать связанный параметр (показано с помощью text()
):
from sqlalchemy import text
connection.execute(
text("select * from table where "
"string like :string limit 1"),
string="_stringStart%")
Ответ 2
Удалите его с помощью обратного слэша \
Я использую его, когда выполняю LIKE
запросы:
query_wildcard = "%{0}%".format(query.replace("%", "\%"))
Для поиска, где query
есть 100%
, query_wildcard
затем содержит %100\%%
, поэтому он фактически ищет 100%
Может это что-то реализовать в вашем коде?