私は Stack Overflow や、SQLite クエリに変数を挿入するための正しい構文を探している他のオンライン調査を検索してきました。ただし、サポートされている 3 つの構文のいずれも、私のクエリでは機能しませんでした。
SQLite DB-API でサポートされている構文は次の 3 つです。
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/から取得
ただし、次を実行すると、次のエラーが表示されます。
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
この問題についてあなたが持っているかもしれない洞察を提供してください。