Mysql
 sql >> Database >  >> RDS >> Mysql

implodere un elenco da utilizzare in una clausola python MySQLDB IN

Usa list_of_ids direttamente:

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

In questo modo eviti di dover citare te stesso ed eviti tutti i tipi di sql injection.

Nota che i dati (list_of_ids ) sta andando direttamente al driver di mysql, come parametro (non nel testo della query), quindi non c'è iniezione. Puoi lasciare tutti i caratteri che desideri nella stringa, senza bisogno di rimuovere o citare i caratteri.