【Python3】sqlite3.ProgrammingError: Incorrect number of bindings supplied【SQLite3】
また引っかかりそうなのでメモ。
環境
Python 3.4.3
sqlite3
解決策
sqlite3.ProgrammingError: Incorrect number of bindings supplied.
と怒られてしまいました。
原因は単純で、executeメソッドの第二引数の形式です。
executeメソッドでは、第二引数はタプルで指定する必要が有るため、以下のようになります。
name = 'some_user_name' # 駄目な例 c.execute('select * from users where name=?', name) # 正しい例 c.execute('select * from users where name=?', (name,))
指定する変数がひとつの場合、最後に余計なカンマが付着するため若干気持ち悪いですが、Pythonの文法規則上やむを得ないですね。