Замена параметра Python SQLite с подстановочными знаками в ПОДОБНОМ

Я пытаюсь использовать параметрическое КАК запрос с библиотекой Sqlite Python как указано ниже:

self.cursor.execute("select string from stringtable where string like '%?%' and type = ?", (searchstr,type))

но? в подстановочном знаке не оценивается, оставляя меня с этой ошибкой:

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

Я также пытался использовать теговую версию запросов с:

like '%:searchstr%' и в наличии списка {"searchstr":searchstr...

но когда я делаю это выполнения запроса, но никогда не возвращает результатов даже при том, что вручную включение "like '%a%'"... возвратите сотни результатов, как это должно

какие-либо предложения?

35
задан MPelletier 7 December 2013 в 16:58
поделиться

1 ответ

Кавычки защищают ? или :name от восприятия их как заполнителя - они воспринимаются буквально. Вам нужно поставить знаки процента вокруг строки, которую вы передаете, и использовать простое обозначение без кавычек. Т.е.:

self.cursor.execute(
  "select string from stringtable where string like ? and type = ?",
  ('%'+searchstr+'%', type))

Обратите внимание, что ни , ни не заключены в кавычки - именно так и должно быть, чтобы они воспринимались как заполнители.

69
ответ дан 27 November 2019 в 06:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: