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

Escapando citações para MySQL em python


não use a formatação de string para interpolar valores SQL. Use parâmetros SQL:
SQL = 'INSERT INTO test_table (col1, col2, col3, col4) VALUES (%s, %s, %s, %s)'
cursor.execute(SQL, (var1, var2, var3, var4))

Aqui o %s são parâmetros SQL; o banco de dados então cuida de escapar os valores (passados ​​como o segundo argumento para `cursor.execute) para você.

Exatamente qual sintaxe você precisa usar depende do seu adaptador de banco de dados; alguns usam %s , outros usam ? para os marcadores.

Caso contrário, você não pode usar contêineres Python, como uma lista, para esses parâmetros. Você teria que serializar isso para um formato de string primeiro; você poderia usar JSON para isso, mas também teria que se lembrar de decodificar o JSON em uma string Python novamente quando consultar o banco de dados. Isso é o que as respostas para a outra pergunta tentaram transmitir.

Por exemplo, se var4 é a lista, você pode usar:
cursor.execute(SQL, (var1, var2, var3, json.dumps(var4)))