Ich arbeite an einem Python-Skript, um Daten in eine MySQL-Datenbank zu importieren. Ich benutze MySQLdb, um meine Abfragen auszuführen. auch eine Funktion verwenden, um eine Abfrage und seine Daten mit dem Namen einzustellenden Parameter automatisch in der Anforderung, wie ersetzt werdenPython MySQLdb Abfrageparameter "IS NULL" statt "= NULL"
I:
req = "SELECT * FROM sample WHERE `id` = %(id)s and `param1` = %(param1)s"
data = {'id': 15, 'param1': None}
cursor.execute(req, data)
Ich mag diese Art und Weise wirklich, weil ich die gleichen Daten bin mit dict
für 3 oder 4 Abfragen.
Das Problem ist, wenn ich versuche, einen WHERE
Zustand mit None
Wert zu machen, hat es meine None
durch NULL
ersetzen, aber ich möchte es eine `param1` = NULL
durch `param1` IS NULL
, ersetzen zu können, so dass die Bedingung true ergibt.
Gibt es eine Möglichkeit, dieses Problem direkt zu lösen? Oder kann ich nur den Parameter replace verwenden (ohne die Abfrage auszuführen), dann einen eigenen ersetzen (= NULL
bis IS NULL
) und dann die Abfrage ausführen.
@ m.nachury Anfangs habe ich nicht die neueste Version des Snippets eingefügt, wo 'param_whitelist' nicht verwendet wird. Es ist im Update behoben. – saaj