Foros del Web » Programando para Internet » Python »

Obtener la clave ID de un nuevo registro

Estas en el tema de Obtener la clave ID de un nuevo registro en el foro de Python en Foros del Web. Buenas tardes, en un programa Python, y utilizando Psycopg2, al hacer un insert en una tabla de Postgresql necesito conocer el id de la primary ...
  #1 (permalink)  
Antiguo 11/11/2011, 10:07
 
Fecha de Ingreso: diciembre-2010
Ubicación: Mallorca
Mensajes: 139
Antigüedad: 13 años, 10 meses
Puntos: 3
Obtener la clave ID de un nuevo registro

Buenas tardes, en un programa Python, y utilizando Psycopg2, al hacer un insert en una tabla de Postgresql necesito conocer el id de la primary key del registro que acaba de insertar, ¿sabe alguien como lo puedo obtener en el momento de hacer el insert?. Gracias.
  #2 (permalink)  
Antiguo 11/11/2011, 11:21
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: Obtener la clave ID de un nuevo registro

Depende.

Si tu Primary Key es autoincremental entonces te recomiendo leer la documentación. Pero básicamente es hacer un query antes del insert:
Código:
select nextval(seq)
Eso si, no he probado que sea seguro sin transacciones.

Por el otro lado si tu Primary Key la pusiste tu entonces solo usa la Primary Key que le pusiste.
  #3 (permalink)  
Antiguo 15/11/2011, 04:27
 
Fecha de Ingreso: diciembre-2010
Ubicación: Mallorca
Mensajes: 139
Antigüedad: 13 años, 10 meses
Puntos: 3
Respuesta: Obtener la clave ID de un nuevo registro

Gracias por la respuesta, de todas formas la solución finalmente adoptada ha sido:
Código HTML:
Ver original
  1. SQL = "INSERT INTO tabla (campo0, campo1, campo2, campo3) VALUES (%s,%s,%s) returning id;"
  2. data = (campo0, campo1, campo2, campo3)
  3. cur.execute(SQL, data)
  4. ultimo_id = cur.fetchone()[0]

Si alguien lo puede aprovechar...

Etiquetas: clave, registro
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 17:16.