Non dovresti usare .format()
per includere valori in una query sql. Usa invece i parametri sql:
sql += " WHERE provider IN ({}) GROUP BY date ORDER BY date ASC".format(', '.join(['%s'] * len(providers)))
cursor.execute(sql, providers)
dove providers
è l'elenco originale.
L'idea è di generare una query SQL con in
prova utilizzando la sintassi dei parametri SQL che corrisponda al numero di provider nell'elenco:WHERE provider in (%s, %s) ...
per un elenco di due fornitori. Sì, la sintassi del parametro MySQLdb sql riprende la sintassi di formattazione python vecchio stile, ma non è la stessa cosa.