SQLite 쿼리에 변수를 삽입하는 올바른 구문을 찾고있는 다른 온라인 연구뿐만 아니라 Stack Overflow를 통해 검색했습니다. 그러나 지원되는 3 가지 구문 중 하나도 내 쿼리에 적용되지 않았습니다.SQLite DB-API 문법 Python 3.5 문제
qmark:
curs.execute("SELECT * FROM actors where actor.first_name = ?",("D'Angelo",))
numeric:
curs.execute("SELECT * FROM actors where actor.first_name = :1", ("D'Angelo",))
named:
curs.execute("SELECT * FROM actors where actor.first_name = :first_name",{'first_name': "D'Angelo"})
이 http://www.philvarner.com/test/ng-python3-db-api/
에서 가져온 나는 다음을 실행할 때 그러나, 나는 이러한 오류가 나타납니다 :
을나는 SQLite는 DB-API에 대한 지원되는 세 가지 구문이있는 것을 발견
named:
tableListQuery = "SELECT name FROM :dbFile WHERE type='table' ORDER BY Name", {'dbFile': dbFile}
userCursor.execute(tableListQuery)
Pycharm error: Expected type 'str', got 'Tuple[str, Dict[str, Any]]'
Terminal error:
File "./dedupeDatabase.py", line 15, in Describe
userCursor.execute(tableListQuery)
ValueError: operation parameter must be str
-------------------------------------------------
qmark:
tableListQuery = "SELECT name FROM ? WHERE type='table' ORDER BY Name", (dbFile,)
userCursor.execute(tableListQuery)
Pycharm error: Expected type 'str', got 'Tuple[str, Tuple[Any]]' instead
Terminal error:
File "./dedupeDatabase.py", line 15, in Describe
userCursor.execute(tableListQuery)
ValueError: operation parameter must be str
-------------------------------------------------
numeric:
tableListQuery = "SELECT name FROM :1 WHERE type='table' ORDER BY Name", (dbFile,)
userCursor.execute(tableListQuery)
Pycharm error: Expected type 'str', got 'Tuple[str, Tuple[Any]]'
Terminal error:
File "./dedupeDatabase.py", line 15, in Describe
userCursor.execute(tableListQuery)
ValueError: operation parameter must be str
이 문제에 대한 통찰력을 제공해주십시오.
쿼리의 테이블 이름을 매개 변수화 할 수 없습니다. [here] (http://stackoverflow.com/questions/1274432/sqlite-parameters-not-allowing-tablename-as-parameter)를 참조하십시오. 이 값은 직접 (외부 소스에서 온 경우) 위조해야하고'.format() '을 사용하여 쿼리 문자열에 넣어야합니다. – roganjosh
이것이 사실이지만 OP가 문제가되는 원인이 아닙니다 만남; 이는 단순히 파이썬 구문 문제 일뿐입니다. 튜플을 정의하고 쿼리 문자열과 매개 변수를 별도로 전달하지 않고'execute' 메서드에 전달하려고합니다. –
파이썬에서 이러한 값을 'sanitze'할 수있는 샘플 코드를 제공해 주실 수 있습니까? 나는 당신이 무엇을 의미하는지 확신하지 못했습니다. –