Đây là một trong những lý do bạn phải sử dụng ràng buộc tham số thay vì định dạng các tham số bằng Python.
Chỉ cần làm điều này:
sql = 'UPGRADE inventory_server set server_mac = %s where server_name = %s'
Sau đó:
cur.execute(sql, macs, host)
Bằng cách đó, bạn chỉ có thể xử lý chuỗi dưới dạng một chuỗi và để thư viện MySQL tìm ra cách trích dẫn và thoát nó cho bạn.
Trên hết, bạn thường nhận được hiệu suất tốt hơn (vì MySQL có thể biên dịch và lưu vào bộ nhớ cache một truy vấn và sử dụng lại nó cho các giá trị tham số khác nhau) và tránh Các cuộc tấn công đưa vào SQL (một trong những cách phổ biến nhất để khiến bản thân bị tấn công).