Использование оператора SQL LIKE со вставкой кортежа - PullRequest
2 голосов
/ 17 марта 2020

Я пытаюсь написать запрос SQL, в котором пользователь вводит имя, и при вставке кортежа запрос возвращает похожие имена в базе данных, используя оператор LIKE.

Это то, что я пробовал:

user_input = input('Enter name: ')
c.execute('SELECT FirstName, LastName FROM Person WHERE FirstName LIKE('%' + ? + '%')', user_input)
user_input = input('Enter name: ')
c.execute('SELECT FirstName, LastName FROM Person WHERE FirstName LIKE '%' + user_input + '%'')
user_input = input('Enter name: ')
c.execute('SELECT FirstName, LastName FROM Person WHERE FirstName LIKE ?', '%' + user_input + '%')

Однако запрос не выполняется, и я получаю эти ошибки.

TypeError: not all arguments converted during string formatting
TypeError: must be str, not tuple

Любая помощь приветствуется!

1 Ответ

1 голос
/ 17 марта 2020

Вы можете использовать двойные кавычки для кавычки запроса SQL, чтобы разрешить одинарные кавычки заключать в кавычки % символы:

c.execute("SELECT FirstName, LastName FROM Person WHERE FirstName LIKE '%' || ? || '%'",
    (user_input,))

, или передать заполнитель в запросе SQL строка с user_input уже заключена в % символов:

c.execute('SELECT FirstName, LastName FROM Person WHERE FirstName LIKE ?',
    (f'%{user_input}%',))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...