Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Implodieren einer Liste zur Verwendung in einer Python-MySQLDB-IN-Klausel

Verwenden Sie die list_of_ids direkt:

format_strings = ','.join(['%s'] * len(list_of_ids))
cursor.execute("DELETE FROM foo.bar WHERE baz IN (%s)" % format_strings,
                tuple(list_of_ids))

Auf diese Weise müssen Sie sich nicht selbst zitieren und vermeiden alle Arten von SQL-Einschleusungen.

Beachten Sie, dass die Daten (list_of_ids ) geht als Parameter (nicht im Abfragetext) direkt an den MySQL-Treiber, sodass keine Injektion erfolgt. Sie können beliebige Zeichen in der Zeichenfolge belassen, ohne dass Zeichen entfernt oder in Anführungszeichen gesetzt werden müssen.