Mysql
 sql >> Base de données >  >> RDS >> Mysql

imploser une liste à utiliser dans une clause python MySQLDB IN

Utilisez la list_of_ids directement :

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 cette façon, vous évitez d'avoir à vous citer et évitez toutes sortes d'injections sql.

Notez que les données (list_of_ids ) va directement au pilote mysql, en tant que paramètre (pas dans le texte de la requête) donc il n'y a pas d'injection. Vous pouvez laisser tous les caractères que vous voulez dans la chaîne, pas besoin de supprimer ou de citer des caractères.