복붙노트

[PYTHON] LIKE에서 와일드 카드를 사용하는 Python SQLite 매개 변수 대체

PYTHON

LIKE에서 와일드 카드를 사용하는 Python SQLite 매개 변수 대체

아래와 같이 Python Sqlite 라이브러리에서 매개 변수화 된 LIKE 쿼리를 사용하려고합니다.

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."

나는 또한 쿼리 버전의 태그를 사용하여 노력 :

'% : searchstr %'및 { "searchstr": searchstr ...이 (가)있는 목록에서

하지만 내가 쿼리를 실행하면 수동으로 "% a % '와 (와) 같이 배치하더라도 쿼리가 실행되지만 결과를 반환하지 않습니다.

어떤 제안이라도 제발?

해결법

  1. ==============================

    1.따옴표는 둘 중 하나를 보호합니까? 또는 : 장소 보유자로 지목되는 이름 - 문자 그대로 사용됩니다. 전달중인 문자열 주위에 백분율 기호를 배치하고 따옴표없이 일반 자리 표시자를 사용해야합니다. 나는

    따옴표는 둘 중 하나를 보호합니까? 또는 : 장소 보유자로 지목되는 이름 - 문자 그대로 사용됩니다. 전달중인 문자열 주위에 백분율 기호를 배치하고 따옴표없이 일반 자리 표시자를 사용해야합니다. 나는

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

    그 둘 다 주목하지? 따옴표로 묶여 있습니다. 정확히 자리 표시 자로 간주해야합니다.

  2. from https://stackoverflow.com/questions/3105249/python-sqlite-parameter-substitution-with-wildcards-in-like by cc-by-sa and MIT license