Не трябва да използвате .format()
за включване на стойности в sql заявка. Вместо това използвайте sql параметри:
sql += " WHERE provider IN ({}) GROUP BY date ORDER BY date ASC".format(', '.join(['%s'] * len(providers)))
cursor.execute(sql, providers)
където providers
е оригиналният списък.
Идеята е да се генерира SQL заявка с in
тествайте с помощта на синтаксис на SQL параметър, съответстващ на броя на доставчиците във вашия списък:WHERE provider in (%s, %s) ...
за списък с двама доставчици. Да, синтаксисът на параметрите на MySQLdb sql отразява стария синтаксис за форматиране на python, но не е едно и също нещо.