Re: Excepción PySQLite2

Luis Miguel Morillas morillas en gmail.com
Mar Abr 11 00:25:52 CEST 2006


No veo dónde haces el insert. Tiene pinta de que intentas insertar en
la base de datos cuando ya la has cerrado. Cuidado con esa repetición
de nombres consulta en tu método consulta.


2006/4/10, Andrés Ignacio Martínez Soto <al084070 en alumail.uji.es>:
> Hola a la lista, estoy haciendo mi blog "artesanal" con Python, lo tengo
> casi terminado, pero me están surgiendo algunos problemas que me impiden
> terminar ciertos módulos de mi blog.
> El equipamiento es un Apache2 con Python 2.4 , PySQLite2 y SQLite 3 , en
> Debian Sarge.
> El problema es el siguiente:
> -1. Los SELECTS de la base de datos funcionan sin problemas
> -2. Cuando se hace un INSERT (escribir) Python lanza:
>         "Exception pysqlite2.dbapi2.ProgrammingError: 'Cannot operate on
> a closed database.' in <bound method dbHandler.__del__ of
> <dbhandler.dbHandler instance at 0xb7bd770c>> ignored"
> -3. Los permisos son los correctos, aún así sigue fallando...
>
> Código de mi "dbHandler" (capa sobre PySQLite2 para trabajar más fácil
> con ella):
>
> #Andrés Ignacio Martínez Soto /* Copyleft - GPL Licencia */
>
> #!/usr/bin/python
> #-*-coding:utf-8 -*-
>
> import pysqlite2.dbapi2 as sqlite
> import cgi
> import time
>
> class dbHandler:
>         def __init__ (self,nbase="blog.db"):
>
>                         #atributs
>                         #self.__dbname_=""
>                         if (nbase):
>                                 self.__dbname_=nbase
>
>                         else:
>                                 self.__dbname_="blog.db"
>
>
>
>                         self.dbh,self.cursor=self.__conecta_()
>
>
>
>         def __conecta_(self):
>                         conexio = sqlite.connect(self.__dbname_)
>                         cur = conexio.cursor()
>                         return conexio,cur
>
>         def consulta (self,consulta,howmany="all"):
>                         try:
>                                 if howmany=="all":
>                                         consulta = self.cursor.execute
> (consulta)
>                                         result=self.cursor.fetchall()
>
>                                 elif howmany=="one":
>                                         consulta = self.cursor.execute
> (consulta)
>                                         result=self.cursor.fetchone()
>
>                                 else:
>                                         consulta = self.cursor.execute
> (consulta+" LIMIT "+str(howmany))
>                                         result=self.cursor.fetchall()
>
>                                 self.dbh.commit()
>                                 return result
>
>                         except:
>                                 self.__del__()
>
>
>         def __del__ (self):
>                         self.cursor.close()
>                         self.dbh.close()
>
>
> def main (db="blog.db"):
>         dbh=dbHandler()
>
> #end código
>
>
> ¿Qué puedo hacer?
>
> Saludos y gracias  :)
>
>
>
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
>
>
>


--
Saludos,

--

Luis Miguel




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