Python MySQLdb: запрос параметров в виде именованного словаря [закрыто]
Я хочу передать параметры запросаcursor.execute()
методMySQLdb
как именованный словарь, так что ониспасся из SQL-инъекции.
Можете ли вы объяснить, почему это даетKeyError
:
>>> c.execute('select id from users where username=%(user)s', {'user':'bob',})
KeyError: 'user'
MySQLdb руководствоhttp://mysql-python.sourceforge.net/MySQLdb.html говорит:
paramstyle
Строковая константа, указывающая тип форматирования маркера параметра, ожидаемого интерфейсом. Установлен в'format'
= Коды формата ANSI C printf, например,'...WHERE name=%s'
, Если объект отображения используется дляconn.execute()
то интерфейс фактически использует'pyformat'
= Коды расширенного формата Python, например'...WHERE name=%(name)s'
, Однако API в настоящее время не позволяет задавать более одного стиля в paramstyle.