Excepción PySQLite2
Andrés Ignacio Martínez Soto
martine en aditel.org
Lun Abr 10 22:43:21 CEST 2006
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 :)
Más información sobre la lista de distribución Python-es