Python MySQLdb: parâmetros de consulta como um dicionário nomeado [fechado]
Eu quero passar parâmetros de consulta paracursor.execute()
método deMySQLdb
como um dicionário nomeado, de tal forma que eles sãoescapou da injeção de SQL.
Você pode explicar por que isso dáKeyError
:
>>> c.execute('select id from users where username=%(user)s', {'user':'bob',})
KeyError: 'user'
Manual do MySQLdbhttp://mysql-python.sourceforge.net/MySQLdb.html diz:
paramstyle
Constante de string indicando o tipo de formatação do marcador de parâmetro esperado pela interface. Definido como'format'
= Códigos de formato ANF C printf, por ex.'...WHERE name=%s'
. Se um objeto de mapeamento for usado paraconn.execute()
, então a interface realmente usa'pyformat'
= Códigos de formato estendido do Python, por ex.'...WHERE name=%(name)s'
. No entanto, a API não permite atualmente a especificação de mais de um estilo em paramstyle.