SQL インジェクションからエスケープされるように、クエリ パラメータを名前付き辞書としてcursor.execute()メソッドに渡したいと考えています。MySQLdb
なぜこれが得られるのか説明できますかKeyError:
>>> c.execute('select id from users where username=%(user)s', {'user':'bob',})
KeyError: 'user'
MySQLdb マニュアルhttp://mysql-python.sourceforge.net/MySQLdb.htmlは次のように述べています。
パラメータスタイル
インターフェイスが期待するパラメーター マーカーの書式設定のタイプを示す文字列定数。
'format'= ANSI C printf フォーマット コードに設定します'...WHERE name=%s'。にマッピング オブジェクトが使用されている場合conn.execute()、インターフェイスは実際に'pyformat'= Python 拡張フォーマット コードを使用します'...WHERE name=%(name)s'。ただし、API は現在、paramstyle で複数のスタイルを指定することを許可していません。