Ini adalah salah satu alasan Anda seharusnya menggunakan pengikatan parameter daripada memformat parameter dengan Python.
Lakukan saja ini:
sql = 'UPGRADE inventory_server set server_mac = %s where server_name = %s'
Kemudian:
cur.execute(sql, macs, host)
Dengan begitu, Anda bisa menangani string sebagai string, dan biarkan perpustakaan MySQL mencari cara untuk mengutip dan menghindarinya untuk Anda.
Selain itu, Anda biasanya mendapatkan kinerja yang lebih baik (karena MySQL dapat mengkompilasi dan menyimpan satu kueri dan menggunakannya kembali untuk nilai parameter yang berbeda) dan menghindari Serangan injeksi SQL (salah satu cara paling umum untuk membuat diri Anda diretas).