2011-09-24 16 views
8

Estoy tratando de insertar un montón de cadenas en mysql usando python y mysql.connector. Mi código actual se ve más o menos así:Escapar cadenas con python mysql.connector

db = mysql.connector.Connect('config blah blah') 
cursor = db.cursor() 
data = (somestring1, somestring2) 
sql = "INSERT INTO mytable (col1, col2) VALUES ('%s', '%s')" 
cursor.execute(sql, data) 

¿Cómo debo proceder para escapar de mis cadenas? I podría intentar hacerlo en python, pero sé que esta no es la manera correcta.

Nota: Me doy cuenta de que mysql.connector aún está en desarrollo.

actualización:

línea 4 debe decir:

sql = "INSERT INTO mytable (col1, col2) VALUES (%s, %s)" 

Respuesta

7

Desde mysql.connector es DB API v2.0 compatible, que no es necesario para escapar de los datos usted mismo, lo hace de forma automática.

+0

Gracias. De hecho, escribí mi código de ejemplo correctamente. Lo he editado para mostrar mi problema. –

+0

¿Y si tiene que generar una declaración de inserción que contiene 1000 (10,000, 1,000,000) valores, tiene que codificarla con '% s'? ¿Qué sucede si no sabe cuántos valores tiene que insertar, por ejemplo, qué sucede si lo lee desde un origen externo (archivo, solicitud HTTP), cómo usar "escapado automático"? – Vitaliy

6

La respuesta de infrared es el mejor enfoque.

Pero, si realmente se necesita para escapar de alguna cadena arbitraria, se puede hacer esto:

db = mysql.connector.connect(......) 

new_str = db.converter.escape('string to be escaped')