To jeden z powodów, dla których powinieneś używać wiązania parametrów zamiast formatowania parametrów w Pythonie.
Po prostu zrób to:
sql = 'UPGRADE inventory_server set server_mac = %s where server_name = %s'
Następnie:
cur.execute(sql, macs, host)
W ten sposób możesz po prostu zajmować się łańcuchem jako łańcuchem i pozwolić bibliotece MySQL dowiedzieć się, jak zacytować i uciec od niego za Ciebie.
Ponadto ogólnie uzyskujesz lepszą wydajność (ponieważ MySQL może skompilować i buforować jedno zapytanie i ponownie użyć go dla różnych wartości parametrów) i uniknąć Ataki wstrzykiwania SQL (jeden z najczęstszych sposobów na zhakowanie).