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

mysqldb python escapando? ou %s?


Para ser mais específico... o cursor.execute() O método recebe um argumento opcional que contém valores a serem citados e interpolados no modelo/instrução SQL. Isso NÃO é feito com um simples % operador! cursor.execute(some_sql, some_params) é NÃO o mesmo que cursor.execute(some_sql % some_params)

A API de banco de dados Python especifica que qualquer driver/módulo compatível deve fornecer um .paramstyle atributo que pode ser 'qmark', 'numeric', 'named', 'format' ou 'pyformat' ... pouco mingau. Isso ainda deve ser mais seguro do que tentar citar e interpolar valores em suas strings SQL.

Fiquei particularmente divertido ao ler Aviso Nunca, nunca, NUNCA use Python string ... interpolação ... Nem mesmo sob a mira de uma arma. nos documentos do PsychoPG.