Sei como mapear uma lista para uma string:
foostring = ";".join( map(str, list_of_ids) )
E eu sei que posso usar o seguinte para colocar essa string em uma cláusula IN:
cursor.execute("DELETE FROM foo.bar WHERE baz IN ("%s")" % ( foostring))
O que eu preciso é realizar a mesma coisa com SEGURANÇA (evitando injeção de SQL) usando MySQLDB. No exemplo acima, como o footstring não é passado como argumento para execução, ele é vulnerável. Eu também tenho que citar e escapar fora da biblioteca mysql.
(Há uma pergunta SO relacionada
a>, mas as respostas listadas não funcionam para MySQLDB ou são vulneráveis à injeção de SQL.)