To je jeden z důvodů, proč byste měli používat vazbu parametrů místo formátování parametrů v Pythonu.
Udělejte toto:
sql = 'UPGRADE inventory_server set server_mac = %s where server_name = %s'
Potom:
cur.execute(sql, macs, host)
Tímto způsobem můžete s řetězcem zacházet jako s řetězcem a nechat knihovnu MySQL, aby zjistila, jak jej citovat a escapovat za vás.
Kromě toho obecně získáte lepší výkon (protože MySQL dokáže zkompilovat a uložit do mezipaměti jeden dotaz a znovu jej použít pro různé hodnoty parametrů) a vyhnout se Útoky SQL injection (jeden z nejběžnějších způsobů, jak se nechat hacknout).