Hi,

I am looking for help with following problem. I scripted threaded database 
query, with session open per thread, and queries delivered through queue. Every 
open DB session must be closed with "abort" or "commit", however on which event 
should I trigger the DB disconnect? Ideally it would close the DB as the thread 
class gets deconstructed, but "__del__" does never fire. How would you solve 
the problem? Here an non working example (bended from IBM developerWorks 
tutorial) that explains the situation:

<code>
multi_query = ["query1","query2","query3","query4","query5","query6"]
queue = Queue.Queue()
          
class ThreadSql(threading.Thread):
        def __init__(self, queue):
                threading.Thread.__init__(self)
                self.queue = queue
                #Open database connection instance
                self.session = DbConnect()
        
        def run(self):
                while True:
                        #grabs query from queue
                        query = self.queue.get()
                        #Fire query and print result
                        print self.session.SQL(query)
                        #Queue job is done
                        self.queue.task_done()
        
        # THIS PART IS NOT WORKING
        def __del__(self):
                #Disconnect Database session and commit or abort transactions
                self.session.Disconnect(<abort, commit>)
                print "The End"
        #---------------------------------

for i in range(5):
        t = ThreadUrl(queue)
        t.setDaemon(True)
        t.start()  

#Fill the queue
for single_query in multi_query:
        queue.put(single_query)

#Wait until query is empty and finish
queue.join()
</code>

Thank you for any idea!

Markus
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to