I suppose that is possible because you are calling the one instance of a cursor object ... maybe you have to create a copy of the cursor object, rather than passing a reference to the one object? or set up the db_connection objects inside each of the threads? ..
Winfried Tilanus wrote: > On 04/28/2006 07:54 AM, *binarystar* wrote: > > Just wondering: is there any risk of two threads accessing the Execute > function at the same time and getting something like this on the same > cursor object: > > thread_1: self.cursor.Execute( sql_statement ) > thread_2: self.cursor.Execute( sql_statement ) > thread_1: return self.cursor.FetchAll() > thread_2: return self.cursor.FetchAll() > > In that case the queries would seriously be messed up. My intuition says > this would need some locking or a 'cursor-pool'. > > best wishes, > > Winfried > > >> your on the right track ... create something like this ( hope the >> formatting doesn't go to hay wire ) >> >> class DB_Connector(object): >> >> """ Humble Database Connection Class """ >> def __init__(self, host="localhost", >> user="MyUser",passwd="MyPassword", **other_db_arguments): >> self.host = host >> self.user = user >> self.passwd = passwd >> # Unpack Other Database Arguments Here >> self.CreateConnection() >> def CreateConnection( self ): >> self.cursor = MySQLdb.connect(self.host, self.user, >> self.passwd) >> def DestroyConnection( self ): >> self.cursor.close() >> def Execute( self, sql_statement ): >> self.cursor.Execute( sql_statement ) >> return self.cursor.FetchAll() >> Then when you run your program create an instance of the object >> >> db_connection = DB_Connector( 'localhost', 'administrator', >> 'betelgeuse99', auto_commit=1, other_keyword_arg="yes" ) >> >> now when you pass the db_connection instance to other classes, a copy >> will be made automagically >> >> thread_1_instance = ThreadingClass( db_connection ) >> thread_2_instance = ThreadingClass( db_connection ) >> thread_3_instance = ThreadingClass( db_connection ) >> >> should work .. >> I hope this is useful -- http://mail.python.org/mailman/listinfo/python-list