Recuperar sequencia con pypgsql

Chema Cortes py en ls-l.org
Mie Ago 3 09:10:11 CEST 2005


FERNANDO VILLARROEL escribió:
>   Hola tengo una tabla postgresql, con una columna del
> tipo serial, que ademas es primary key, bueno inserto
> registro sin problemas en esta tabla, pero tengo
> problemas al recuperar la secuencia asignada por la
> base de datos
> 
> cur=cnx.cursor()
> q="select currval('cltescred_cclte_seq')"
> cur.execute(q)
> 
> me da el siguiente mensaje:
> 
> ERROR: currval of sequence "cltescred_cclte_seq" is
> not yet defined in this session
> 
> Alguien sabe como puedo recuperar dicha secuencia:

Según la documentación de postgres:

currval: "An error is reported if nextval has never been called for this
sequence in this session."

Resulta que cada vez que abres un cursor estás abriendo una nueva
sesión. Este comportamiento se debe a que cada sesión puede obtener
valores distintos del 'nextval' para evitar conflictos entre sesiones
simultáneas.

Si necesitas saber por qué número va, obtén el valor el máximo de esa
columna.




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