[Python-es] problema con sqlite3 y hilos

xiao xiong mao panda rojo ailurus.fulgens en hotmail.com
Vie Ago 31 02:08:26 CEST 2012


no se usar sqlite pero se me ocurre una idea
si el problema es k el segundo hilo no puedo usar el sql, crea en la clase del hilo principal métodos para consultar el sqlite y llamas esos métodos desde el hilo
algo como esto: hacer una clase server, una clase cliente y una clase proxy
server espera nuevos clientes y cuando se conecta uno lanza un hilo cliente
proxy se ejecuta en su propio hilo, tiene acceso a la base de datos y los métodos k sean necesarios para consultarla
cliente llama a los métodos de la clase-hilo proxy, creo k así los métodos se ejecutorian en el hilo del proxy... no estoy seguro d como hacer para k el hilo de proxy no se cierre solo, se me ocurre hacer k proxy abra una ventana vacía, incluso la puedes poner en segundo plano, y las llamadas de los clientes serian como eventos de la ventana
no se mucho de hilos pero si el problema es k no se puede consultar sqlite desde otro hilo, pues hacer k un solo hilo haga las consultas

From: correo en miguelbarraza.com.ar
To: python-es en python.org
Date: Thu, 30 Aug 2012 00:24:29 -0300
Subject: [Python-es] problema con sqlite3 y hilos








buenas, estoy haciendo una aplicación con 
sockets, cada cliente lo atiende en un hilo diferente.
cada cliente hace consultas a una base 
sqlite3.
pero al consultar me tira este error:
 
    
self.db.execute(sql)
ProgrammingError: SQLite objects created in a thread can 
only be used in that sa
me thread.The object was created in thread id 2480 
and this is thread id 3740
 
al inicio hacía una sola conexión y le pasaba el 
puntero de conexión a el objeto que manejaba el cliente.
pensé que ese era el error, así que hice una 
conexión por cada cliente dentro de la clase que gestiona cada conexión. y me 
tira el mismo error...así que llegué a la conclusión que sqlite no funciona con 
hilos...¿es eso cierto?...o de que forma puedo solucionar este 
problema?.
 
lo que hice también fue hacer una conexión dentro 
de un objeto y pasar el puntero de ese objeto a todos los clientes, y hacer 
consultas a esa clase master para que devuelva los datos de base de datos. y 
igualmente tiró el mismo error.
 
imagino que debe haber forma de trabajar con 
sqlite3 y hilos.
así que por eso consulto: alguien se vio en este 
problema?, como lo pudo solucionar?.
 
saludos a todos!.
 
pd.: no copio parte del código ya que es bastante y 
no se donde exactamente podría estar el error...aunque como lo probé de varias 
formas y siempre tiró el mismo error creo que es la metodología, no es el 
código...tiene que haber alguna forma que no conozco para utilizar sqlite con 
hilos o procesos.
 
atte, Miguel

_______________________________________________
Python-es mailing list
Python-es en python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/ 		 	   		  
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20120830/e8b6047a/attachment.html>


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