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.