Я пытаюсь использовать параметрическое КАК запрос с библиотекой 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%'"...
возвратите сотни результатов, как это должно
какие-либо предложения?
Кавычки защищают ?
или :name
от восприятия их как заполнителя - они воспринимаются буквально. Вам нужно поставить знаки процента вокруг строки, которую вы передаете, и использовать простое обозначение без кавычек. Т.е.:
self.cursor.execute(
"select string from stringtable where string like ? and type = ?",
('%'+searchstr+'%', type))
Обратите внимание, что ни , ни
не заключены в кавычки - именно так и должно быть, чтобы они воспринимались как заполнители.