Bạn không nên sử dụng .format()
để bao gồm các giá trị trong một truy vấn sql. Sử dụng các tham số sql để thay thế:
sql += " WHERE provider IN ({}) GROUP BY date ORDER BY date ASC".format(', '.join(['%s'] * len(providers)))
cursor.execute(sql, providers)
nơi providers
là danh sách ban đầu.
Ý tưởng là tạo một truy vấn SQL với in
kiểm tra bằng cách sử dụng cú pháp tham số SQL khớp với số lượng nhà cung cấp trong danh sách của bạn:WHERE provider in (%s, %s) ...
cho danh sách hai nhà cung cấp. Có, cú pháp tham số sql MySQLdb lặp lại cú pháp định dạng python kiểu cũ, nhưng không giống như vậy.