Как использовать escape-символ в SQL для запроса с LIKE?(Python) - PullRequest
0 голосов
/ 01 марта 2019

Пытался, но не смог использовать LIKE в моем Query.

Это прекрасно работает, используя ? и =:

def read_part_of_database(table_column, user_query):
    c_lime.execute("SELECT * FROM lime_database_table" 
            "WHERE {} = ? ORDER BY time_start".format(table_column), [(user_query)])
    for row in c_lime.fetchall():
        print(row)

Но при этом пользователю необходимо ввести точный и полный query, как это представлено вdatabase.Поэтому вместо этого я хочу использовать LIKE.Я пробовал следующее, но, похоже, ничего из этого не работает:

c_lime.execute("SELECT * FROM lime_database_table WHERE {} LIKE %s" 
        "ORDER BY time_start".format(table_column), ["%" + user_query + "%"])

Это дает мне ошибку: c_lime.execute("SELECT * FROM lime_database_table WHERE {} LIKE %s ORDER BY time_start".format(table_column), ["%" + user_query + "%"]) sqlite3.OperationalError: near "%": syntax error

Я пробовал еще несколько вариантов этого, взятых из SO и другие источники, но, похоже, ничего из этого не работает.Что-то я делаю не так с побегом %s?

user_query, при использовании = ?, дата: 2/14/2015 1:00:00 PM и при использовании LIKE Я принимаю участие в этом: 2/14/2015

1 Ответ

0 голосов
/ 01 марта 2019

Чтобы использовать символ% в запросе с LIKE, заключите его в одинарные кавычки:

 c_lime.execute("""SELECT * FROM lime_database_table WHERE {} LIKE '%{}' 
                   ORDER BY time_start""".format(table_column, user_query))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...