MySQLdb y cgi

Chema Cortes chemacortes en wanadoo.es
Mar Mar 4 11:01:55 CET 2003


En respuesta a un mensaje de ciriso en retena.com:

> Cómo sería lo de los parámetros , es cosa de Python o de SQL ?

En realidad, es del módulo MySQLdb :-)

query=""" INSERT into datos( razon , contacto, telefono)
values ( '%(Razon)s' ,'%(Contacto)s' , '%(Telefono)s') """
cr.execute(query, form)

No hace falta convertir antes los parámetros a cadena de caracteres. Lo hace el
módulo, incluso cuida de que no haya caracteres extraños que den fallos con el
SQL.

Si 'form', según parece, es un diccionario de objetos podrías hacer:

query= """ INSERT into datos( razon , contacto, telefono)
values ( '%s' ,'%s' , '%s') """
cr.execute(query, form.values())

Es un foco de problemas si te confundes con el orden de los valores. Lo mejor es
hacer que tus objetos tengan definido el método __str__ y así podrás emplear
la primera forma que te he puesto.

Si vas a insertar varios registros, es mejor utilizar el 'executemany':

forms[0]={ ... }
forms[1]={ ... }
...

query=""" INSERT into datos( razon , contacto, telefono)
values ( '%(Razon)s' ,'%(Contacto)s' , '%(Telefono)s') """
cr.executemany(query, forms)


Ya se que parece complicado. Inténtalo, y pasa el código con el que tengas
problemas.

--
"Haz software libre, no la guerra"
_____________________________________________________________________
Horas ilimitadas para leer y enviar correos con Tarifa Plana Wanadoo 
¡¡ desde las 3 de la tarde!!
Compruébalo en http://www.wanadoo.es/acceso-internet




Más información sobre la lista de distribución Python-es