Você não deve usar
.format()
para incluir valores em uma consulta sql. Use parâmetros sql em vez disso:sql += " WHERE provider IN ({}) GROUP BY date ORDER BY date ASC".format(', '.join(['%s'] * len(providers)))
cursor.execute(sql, providers)
onde
providers
é a lista original. A ideia é gerar uma consulta SQL com o
in
teste usando a sintaxe do parâmetro SQL que corresponde ao número de provedores em sua lista:WHERE provider in (%s, %s) ...
para uma lista de dois provedores. Sim, a sintaxe do parâmetro MySQLdb sql ecoa a sintaxe de formatação python de estilo antigo, mas não é a mesma coisa.