Mensaje de error

Marcos Sánchez Provencio rapto en arrakis.es
Vie Jul 18 13:40:41 CEST 2003


1) Deberías utilizar parámetros en tus consultas sql

inserta   = '''insert into actaservicio
values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)'''
params=(factura,clase,nombre,telefono,matricula,
	sindefecto,calidadtrab,precio,plazo,
	otrosel,opinion,rellamada,retrabajo,folio)
resultado = conecta.query(inserta, params)

* Va más rápido
* No hace falta saber la sintaxis interna de la BD para fechas, cadenas 
con caracteres especiales (comillas, tabuladores, retornos de carro...).

2) Es mucho más sano poner la lista explícita de columnas a insertar:

inserta   = '''insert into actaservicio
(factura,clase,nombre,telefono,matricula,
	sindefecto,calidadtrab,precio,plazo,
	otrosel,opinion,rellamada,retrabajo,folio)
values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)'''

* Así se autodocumenta y sigue funcionando si añades columnas opcionales.

Ojo, es la lista de nombres de columnas, no las variables de tu programa.

Ojo2, el formato de los parámetros depende de la BD. Consulta la 
documentación del módulo de acceso a datos. A veces, en vez de %s, hay 
que poner ? o cosas así. Pero el principio general vale: si pones tú las 
comillas a una cadena, lo estás haciendo mal. Si tienes que dar formato 
a una fecha para meterla en la BD, lo estás haciendo mal.

Chao

Francisco Navarro wrote:
> Hola me podrian ayudar a encontrar mas documentacion
> sobre para continuar con mi programa en python ya que
> no encuantro el proble sobre el siguiente mensaje:
>  Traceback (most recent call last):
> 
>    File "/home/fnavarro/altas2.py", line 27, in ?
>      resultado = conecta.query(inserta)
>  _pg.error: ERROR:  parser: parse error at or near "3"
> 
> esto me sucede cuando hago un acceso a la tabla, probe
> con intsertar dos campos y funciona bien, mas de dos
> en via ese mensaje, no he encontrado mas
> documentacion.
> 
> lo intento con las siguientes instruciones:
> 
> inserta   = 'insert into actaservicio
> values('+factura+',\''+clase+',\''+nombre+',\''+telefono+',\''+matricula+',\''+sindefecto+',\''+calidadtrab+',\''+precio+',\''+plazo+',\''+otrosel+',\''+opinion+',\''+rellamada+',\''+retrabajo+',\''+folio+'\')'
> print inserta
> print
> resultado = conecta.query(inserta)
> 
> Por su ayuda GRACIAS!
> 




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