私はこのような機能を持っています:
def func(self, id):
self.cursor.execute("SELECT * FROM my_table WHERE id=?", (id,))
これは、id に整数値を渡すと機能します。
obj.func(id=55)
今、私はこの関数を次のように再利用したいと思うかもしれません:
obj.func(id="associated_id")
associated_id は、実際には my_table の 2 番目の列です。ただし、これは機能しません (id==associated_id の行があっても結果が見つかりません)。
関数を次のように変更すると機能します。
def func(self, id):
self.cursor.execute("SELECT * FROM my_table WHERE id=%s" % str(id))
最初のバージョンが機能しないのはなぜですか? ネイティブの python 文字列フォーマットの代わりに sqlite3.execute パラメータを使用してこの問題を解決する方法はありますか?