Foros del Web » Programando para Internet » Python »

Consulta sobre una actualización

Estas en el tema de Consulta sobre una actualización en el foro de Python en Foros del Web. Buneos dias, necesito una ayuda, en un Update con Where en Python+Psycopg2 sobre PostgreSQL, ¿el orden en el que se ponen los campos puede influir?, ...
  #1 (permalink)  
Antiguo 29/12/2010, 07:55
 
Fecha de Ingreso: diciembre-2010
Ubicación: Mallorca
Mensajes: 139
Antigüedad: 13 años, 10 meses
Puntos: 3
Consulta sobre una actualización

Buneos dias, necesito una ayuda, en un Update con Where en Python+Psycopg2 sobre PostgreSQL, ¿el orden en el que se ponen los campos puede influir?, en el ejemplo que os pongo necesita dos valores, el campo a modificar y el campo de búsqueda (numrep y relacio). ¿están correctos tal como están?.
Es que siempre me sale por exception "mal update"...

tal vez hay algo incorecto en la sintaxis del update ??, es que no veo ningún ejemplo en el help de psycopg2...

Código HTML:
Ver original
  1. import psycopg2 #@UnresolvedImport
  2. cn = psycopg2.connect("host=localhost dbname=my_frx user=postgres password=xxxxxx")
  3. cur = cn.cursor()
  4. relacio=536103847011678222222222222222222222222222222222222222222222
  5. numrep=0
  6. numrep = numrep + 1
  7. try:
  8.     SQL = ("UPDATE tabla_60 SET numrepeticiones=%s WHERE sesentaminutos = %s",)
  9.     data = (numrep, relacio)
  10.     cur.execute(SQL, data)
  11.     cn.commit()
  12.     print "actualizado en tabla_60"
  13. except:
  14.     print "mal update en tabla_60"

gracias.
  #2 (permalink)  
Antiguo 29/12/2010, 11:40
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Consulta sobre una actualización

SQL debe de ser un string no una tupla.

Código Python:
Ver original
  1. SQL = "UPDATE tabla_60 SET numrepeticiones=%s WHERE sesentaminutos = %s"

Es el único error que le veo, por lo menos a simple vista.
  #3 (permalink)  
Antiguo 29/12/2010, 17:13
 
Fecha de Ingreso: diciembre-2010
Ubicación: Mallorca
Mensajes: 139
Antigüedad: 13 años, 10 meses
Puntos: 3
Respuesta: Consulta sobre una actualización

Hola otra vez, el error que me da al ejecutarlo ahora es

psycopg2.ProgrammingError: el operador no existe: character = numeric
LINE 1: ...bla_60 SET numrepeticiones=1 WHERE sesentaminutos = 53610384...
^
HINT: Ningún operador coincide con el nombre y el tipo de los argumentos. Puede desear agregar conversiones explícitas de tipos.

no se exactamente a que se refiere.
  #4 (permalink)  
Antiguo 29/12/2010, 19:38
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Consulta sobre una actualización

Al parecer estas mezclando datos numéricos con strings. Te recomiendo usar adapt.
  #5 (permalink)  
Antiguo 30/12/2010, 04:11
 
Fecha de Ingreso: diciembre-2010
Ubicación: Mallorca
Mensajes: 139
Antigüedad: 13 años, 10 meses
Puntos: 3
Respuesta: Consulta sobre una actualización

Gracias, finalmente lo he arreglado con resultado = str(resultado). El problema venía de este campo.

He mirado el tema de adapt en Psycopg2, pero realmente no sé como utilizarlo ¿podeis ponerme un ejemplo sencillo?.

Gracias.
  #6 (permalink)  
Antiguo 30/12/2010, 09:39
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Consulta sobre una actualización

Probablemente adapt en este caso sería un over kill, de todas formas te dejo el ejemplo.
  #7 (permalink)  
Antiguo 30/12/2010, 13:14
 
Fecha de Ingreso: diciembre-2010
Ubicación: Mallorca
Mensajes: 139
Antigüedad: 13 años, 10 meses
Puntos: 3
Respuesta: Consulta sobre una actualización

Muchas gracias. ¡¡No se que haría sin vosotros!!


Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:01.