Du bör inte använda .format()
för att inkludera värden i en sql-fråga. Använd sql-parametrar istället:
sql += " WHERE provider IN ({}) GROUP BY date ORDER BY date ASC".format(', '.join(['%s'] * len(providers)))
cursor.execute(sql, providers)
där providers
är den ursprungliga listan.
Tanken är att generera en SQL-fråga med in
testa med SQL-parametersyntax som matchar antalet leverantörer i din lista:WHERE provider in (%s, %s) ...
för en lista med två leverantörer. Ja, MySQLdb sql-parametersyntaxen ekar den gamla pythonformateringssyntaxen, men är inte samma sak.