Python MySQLdb: parámetros de consulta como un diccionario con nombre [cerrado]
Quiero pasar los parámetros de consulta acursor.execute()
método deMySQLdb
como un diccionario con nombre, tal que sonescapado de inyección SQL.
¿Puedes explicar por qué esto da?KeyError
:
>>> c.execute('select id from users where username=%(user)s', {'user':'bob',})
KeyError: 'user'
MySQLdb manualhttp://mysql-python.sourceforge.net/MySQLdb.html dice:
paramstyle
Constante de cadena que indica el tipo de formato de marcador de parámetro esperado por la interfaz. Ajustado a'format'
= Códigos de formato de impresión ANSI C, por ejemplo,'...WHERE name=%s'
. Si se usa un objeto de mapeo paraconn.execute()
, entonces la interfaz realmente usa'pyformat'
= Códigos de formato extendido de Python, por ejemplo,'...WHERE name=%(name)s'
. Sin embargo, la API no permite actualmente la especificación de más de un estilo en paramstyle.