sql >> Base de Datos >  >> RDS >> Mysql

implosión de una lista para usar en una cláusula MySQLDB IN de python

Usa la list_of_ids directamente:

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

De esa manera, evita tener que citarse a sí mismo y evitar todo tipo de inyección de sql.

Tenga en cuenta que los datos (list_of_ids ) va directamente al controlador de mysql, como un parámetro (no en el texto de la consulta), por lo que no hay inyección. Puede dejar los caracteres que desee en la cadena, sin necesidad de eliminar o citar caracteres.