Gebruik .format()
. niet om waarden in een sql-query op te nemen. Gebruik in plaats daarvan sql-parameters:
sql += " WHERE provider IN ({}) GROUP BY date ORDER BY date ASC".format(', '.join(['%s'] * len(providers)))
cursor.execute(sql, providers)
waar providers
is de originele lijst.
Het idee is om een SQL-query te genereren met de in
test met behulp van SQL-parametersyntaxis die overeenkomt met het aantal providers in uw lijst:WHERE provider in (%s, %s) ...
voor een lijst met twee aanbieders. Ja, de syntaxis van de MySQLdb sql-parameter weerspiegelt de oude stijl van de python-opmaaksyntaxis, maar is niet hetzelfde.