RE: [Python-es] Si devuelvo un cursor desdeunafunción automáticamente se me cierra el cursor

rosendo rosendo.martinez en valdisme.com
Lun Oct 18 09:55:30 CEST 2004


La verdad es que tendría más sentido que compartieses la conexión en vex de
los cursores.
En cualquier caso, debe ser una limitación o bein de la librería o bien de
la base de datos, no sé.
Otro acercamiento al problema aunque no se si te servirá seria haciendo:

Def GetConnection():
	import psycopg
      db = psycopg.connect(host="bichejo", user="mcebolla", database="uoc")
	return db

def func():
	db = GetConnection()
	cr = db.cursor()
	etc.....
	cr.close()

Creo que queda más claro que así compartes conexión y no compartes cursores,
que es un poco lioso.

Un  saludo.
Rosendo.
PD:Este código está sinprobar para psycopg, con cx_oracle	si funciona.
Espero que te ayude.
	

-----Mensaje original-----
De: python-es-bounces en aditel.org [mailto:python-es-bounces en aditel.org] En
nombre de Manel i Elena
Enviado el: viernes, 15 de octubre de 2004 23:38
Para: La lista de python en castellano
Asunto: Re: [Python-es] Si devuelvo un cursor desdeunafunción
automáticamente se me cierra el cursor

Gracias por la idea Rosendo, lo he probado pero sigue pasando lo mismo:

Python 2.3.4 (#2, Sep 24 2004, 08:39:09)
[GCC 3.3.4 (Debian 1:3.3.4-12)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> def func():
...     import psycopg
...     db = psycopg.connect(host="bichejo", user="mcebolla",
database="uoc")
...     cursor = db.cursor()
...     return cursor
...
>>> c=func()
>>> c.execute("select 1")
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
psycopg.InterfaceError: already closed
>>>

y con pypgsql  también... estoy intrigado, no sé si esto es normal o una 
limitación de estas librerías.

Saludos, Manel.


El Viernes, 15 de Octubre de 2004 18:18, rosendo escribió:
> No conozco psycopg, pero imagino que será esto:
> def func():
>  import psycopg
>  db = psycopg.connect(host="bichejo", user="mcebolla", database="uoc")
>  cursor = db.cursor()
>  return cursor
>
> Pruebalo y me cuentas
> Un saludo.
> Rosendo.
>
>
> -----Mensaje original-----
> De: python-es-bounces en aditel.org [mailto:python-es-bounces en aditel.org] En
> nombre de Manel i Elena
> Enviado el: viernes, 15 de octubre de 2004 17:09
> Para: python-es en aditel.org
> Asunto: [Python-es] Si devuelvo un cursor desde unafunción automáticamente
> se me cierra el cursor
>
> Si ejecuto el siguiente código
>
> """
> import psycopg
> db = psycopg.connect(host="bichejo", user="mcebolla", database="uoc")
> cursor=db.cursor()
> cursor.executes("select 1")
> """
>
> Tod funciona perfectamente pero si hago esto:
>
> """
> def func():
>  import psycopg
>  db = psycopg.connect(host="bichejo", user="mcebolla", database="uoc")
>  return db.cursor()
>
> cursor=func()
> cursor.executes("select 1")
> """
>
> Entonces me sale el siguiente mensaje de error
>
> """
>   File "<stdin>", line 1, in ?
> psycopg.InterfaceError: already closed
> """
>
> ¿ No se puede devolver un cursor mediante una función ?, si hago esto
mismo
> con MySQLdb todo va bien.
>
> Por cierto, he probado exactamente lo mismo con pypgsql  y me pasa lo
> mismo.
>
> ¿ Alguna idea ?.
>
> Manel.
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es

-- 
Saludos de Elena i Manel.
URL: www.manelelena.com
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es




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