Tecnología

Inicio

Escapar de consultas para MySQL en Python

Escapar de consultas para MySQL en Python


Python, un lenguaje de programación equipado con semántica dinámica, es uno de los favoritos entre los programadores y programadores, pero también lo es MySQL. La integración de MySQL con Python a menudo no es un gran problema para los programadores experimentados, pero la codificación puede ser un poco complicado debido a la API C a _mysql correlación de funciones. Escapar es uno de estos problemas.

MySQLdb

Para la API de base de datos de Python, MySQLdb es a menudo el arma de elección. Los codificadores pueden evitar la escritura directa al módulo mediante la interfaz de MySQL. Esto permite la implementación de MySQL C API, pero esto no siempre es una tarea sencilla. MySQL C API tiene sus propios procesos orientados a objetos. Cuando se trabaja con funciones de escape, "mysql_escape_string ()" se traduce en MySQL como "_mysql.escape_string ()". El problema con esta estrategia es que sin escape adecuada para MySQL en Python, no puede haber problemas asociados con las cadenas complicadas, ya que no puede escapar de forma adecuada.

Inserción de variables

Otro problema se produce cuando los codificadores insertar variables en las tablas de MySQL. En el siguiente fragmento, el codificador inserta cuatro variables en una tabla.

cursor.execute ( "" "INSERT INTO armario (zapatos, calcetines, legwarmer, superior)
VALORES (Nike, Puma, lana, Adidas) "" ")

Este fragmento de código podría no funcionar a menos que el codificador añade un carácter de escape adecuado, como "% s". Las comillas dobles se utilizan también son caracteres de escape, pero para escapar de las variables, el codificador debe utilizar "% s".

Signo de porcentaje

Los modificadores utilizados en la instrucción SQL que son responsables de la unión de los parámetros pueden ser un poco confuso. sintaxis de estilo "Printf" se utiliza comúnmente en la biblioteca cliente de MySQL. El fragmento revisado debería tener el siguiente aspecto:

cursor.execute ( "" "INSERT INTO armario (zapatos, calcetines, legwarmer, superior)
VALORES (% (Nike) s,% (puma) s,% (lana) s,% (adidas) s) "" ")

Sin embargo, la adición de los caracteres de escape no es suficiente para aliviar el problema. Simplemente añadiendo estos personajes solo ahora hace que el código susceptible a problemas de cadena de formato y abierto a ataques maliciosos.

consideraciones

El codificador puede ser capaz de codificar un código de seguridad, que trabaja mediante la adición de más ediciones al código. He aquí el fragmento final de trabajo:

cursor.execute ( "" "INSERT INTO canciones armario (zapatos, calcetines, legwarmer, superior)
VALORES (% s,% s,% s,% s) "" ", (Nike, Puma, lana, Adidas))

Otro problema puede ocurrir con el símbolo de porcentaje. Si el codificador utiliza un signo de porcentaje en el guión, (concretamente en la cadena de consulta ", en su defecto para ejecutar ()"), debe ser adecuadamente escapó - dos signos de porcentaje se deben utilizar. Uno de los signos de porcentaje actuará como el identificador para el escape.