Python + sqlite: запрос LIKE с подстановочными знаками - PullRequest
7 голосов
/ 10 декабря 2010

Привет. Я пытаюсь найти таблицу SQlite на основе ввода пользователя с подстановочными знаками.Я пробовал разные методы, я не могу заставить его работать.Это последнее, что я попробовал, это решение, которое я нашел здесь на самом деле, но оно могло измениться в Python 3.

    search = input("type name or partial name: ")
    cur.execute("select * from contacts where name like ?",
                ('%'+search+'%'))

Это приводит к этой ошибке в последней строке.

sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 5 supplied.

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

1 Ответ

14 голосов
/ 10 декабря 2010

Похоже, ваша проблема в том, что вы указали строку в качестве второго аргумента для cur.execute, когда вы, вероятно, намеревались предоставить одноэлементный кортеж, содержащий строку.

Поскольку строка является последовательностью, каждый символ в строке будет интерпретироваться как отдельный параметр, и поэтому вы видите ошибку «Неправильное количество привязок».

Попробуйте:

cur.execute("select * from contacts where name like ?", ('%'+search+'%',))

Обратите внимание на запятую в кортеже, ('%'+search+'%',). Без него это не кортеж, а просто строка в скобках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...