Thread: [SQLObject] SQLObject 0.6.1 / MySQL Transaction Bug?
SQLObject is a Python ORM.
Brought to you by:
ianbicking,
phd
From: Ryan T. <rto...@gm...> - 2005-02-08 01:48:46
|
Hi, Possible bug in SQLObject 0.6.1 using MySQLdb with transactions.. Python/2.3, SQLObject/0.6.1, MySQLdb/1.0.1 test.py: from sqlobject import * __connection__ = connectionForURI("mysql://root:trustNO1@localhost/test") __connection__.debug = 1 trans = __connection__.transaction() $ python test.py 1/Pool : ACQUIRE pool=[] Traceback (most recent call last): File "test.py", line 6, in ? trans = __connection__.transaction() File "./lib/sqlobject/dbconnection.py", line 238, in transaction return Transaction(self) File "./lib/sqlobject/dbconnection.py", line 535, in __init__ self._dbConnection._setAutoCommit(self._connection, 0) AttributeError: MySQLConnection instance has no attribute '_setAutoCommit'Exception exceptions.RuntimeError: 'maximum recursion depth exceeded' in <bound method Transaction.__del__ of <sqlobject.dbconnection.Transaction object at 0x3aa70>> ignoredException exceptions.RuntimeError: 'maximum recursion depth exceeded' in <bound method Transaction.__del__ of <sqlobject.dbconnection.Transaction object at 0x3aa70>> ignored.... The _setAutoCommit method doesn't seem to existing in the DBAPI class hierarchy. Commenting line dbconnection.py:535 gets rid of the exception but is it getting rid of more than that? Transactions seem to be working from the debug output although I could be missing something. Thanks, Ryan |
From: Ian B. <ia...@co...> - 2005-02-08 07:50:22
|
Ryan Tomayko wrote: > Hi, > > Possible bug in SQLObject 0.6.1 using MySQLdb with transactions.. It's kind of a weird bug in __del__ -- actually there were several in that method that I ironed out, and I think they are fixed in the trunk. I don't think they'll effect most realistic situations, though I'm not sure -- they only effect garbage collected objects too, so the errors are thrown in a kind of weird limbo world. -- Ian Bicking / ia...@co... / http://blog.ianbicking.org |
From: Ryan T. <rto...@gm...> - 2005-02-08 15:24:52
|
On Feb 8, 2005, at 2:50 AM, Ian Bicking wrote: > It's kind of a weird bug in __del__ The problems in __del__ are just a side-effect of the Transaction instance not finishing initialization properly. The first exception occurs in Transaction.__init__. I believe it's an AttributeError caused by trying to call _setAutoCommit on the Connection object (there's no _setAutoCommit method). > -- actually there were several in that method that I ironed out, and I > think they are fixed in the trunk. I don't think they'll effect most > realistic situations, though I'm not sure -- they only effect garbage > collected objects too, so the errors are thrown in a kind of weird > limbo world. I'll take a look at trunk and see if I can reproduce. I'm not all that worried about the __del__ problems though. From what I'm seeing, Transactions are completely broken using MySQL due to the _setAutoCommit call in Transaction.__init__. Thanks, Ryan |