Nie powinieneś używać .format()
aby uwzględnić wartości w zapytaniu sql. Zamiast tego użyj parametrów sql:
sql += " WHERE provider IN ({}) GROUP BY date ORDER BY date ASC".format(', '.join(['%s'] * len(providers)))
cursor.execute(sql, providers)
gdzie providers
to oryginalna lista.
Pomysł polega na wygenerowaniu zapytania SQL z in
przetestuj za pomocą składni parametrów SQL pasującej do liczby dostawców na Twojej liście:WHERE provider in (%s, %s) ...
dla listy dwóch dostawców. Tak, składnia parametru sql MySQLdb odzwierciedla starą składnię formatowania Pythona, ale to nie to samo.