pysqlite を使用して、いくつかのデータで何かを行う手順を作成しています。同じ種類の操作が複数のテーブルと列の同様のフィールドに対して行われるため、次のように sql ステートメントをパラメーター化できると考えました。
def foo():
column = 'c'
table = 't'
row = 1
# preferred approach, gives syntax error
c.execute('SELECT ? FROM ? WHERE id=?', (column, table, row))
# sanity check, works fine
c.execute('SELECT c FROM t WHERE id=?', (row))
# workaround, also works, but is this the right way?
c.execute('SELECT % FROM % WHERE id=?' % (column, table), row))
表示されるエラーはあまり役に立ちませんが ( sqlite3.OperationalError: near "?": syntax error
)、要点はわかります。Pysqlite は、このように使用されるプレースホルダーを評価しません。
上記を行う適切な方法とともに、ここで何が起こっているのかを誰かが指摘できますか?