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