Anda tidak boleh menggunakan .format()
untuk memasukkan nilai dalam kueri sql. Gunakan parameter sql sebagai gantinya:
sql += " WHERE provider IN ({}) GROUP BY date ORDER BY date ASC".format(', '.join(['%s'] * len(providers)))
cursor.execute(sql, providers)
di mana providers
adalah daftar aslinya.
Idenya adalah untuk menghasilkan kueri SQL dengan in
uji menggunakan sintaks parameter SQL yang cocok dengan jumlah penyedia dalam daftar Anda:WHERE provider in (%s, %s) ...
untuk daftar dua penyedia. Ya, sintaks parameter sql MySQLdb menggemakan sintaks format python gaya lama, tetapi bukan hal yang sama.