Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Caracteres especiais de escape do Python MySQL


Essa é uma das razões pelas quais você deve usar a vinculação de parâmetro em vez de formatar os parâmetros em Python.

Basta fazer isso:
sql = 'UPGRADE inventory_server set server_mac = %s where server_name = %s'

Então:
cur.execute(sql, macs, host)

Dessa forma, você pode lidar com a string como uma string e deixar a biblioteca MySQL descobrir como citá-la e escapar dela para você.

Além disso, você geralmente obtém melhor desempenho (porque o MySQL pode compilar e armazenar em cache uma consulta e reutilizá-la para diferentes valores de parâmetro) e evitar Ataques de injeção de SQL (uma das maneiras mais comuns de ser hackeado).