Python MySQLdb: Abfrageparameter als benanntes Wörterbuch [geschlossen]
Ich möchte Abfrageparameter übergebencursor.execute()
Methode vonMySQLdb
als benanntes Wörterbuch, so dass sie sindentkam von SQL Injection.
Kannst du erklären, warum das so ist?KeyError
:
>>> c.execute('select id from users where username=%(user)s', {'user':'bob',})
KeyError: 'user'
MySQLdb Handbuchhttp://mysql-python.sourceforge.net/MySQLdb.html sagt:
Paramstyle
String-Konstante, die den Typ der von der Schnittstelle erwarteten Parametermarkenformatierung angibt. Einstellen'format'
= ANSI-C-Printf-Formatcodes, z.'...WHERE name=%s'
. Wenn ein Mapping-Objekt für verwendet wirdconn.execute()
, dann nutzt die Schnittstelle tatsächlich'pyformat'
= Erweiterte Python-Formatcodes, z.'...WHERE name=%(name)s'
. Die API erlaubt derzeit jedoch nicht die Angabe von mehr als einem Stil in paramstyle.