If theres no exception being raised beforehand, and theres no concurrent access to that Session, then I cant say what the cause of that exception is, you'd have to provide a test case which can reproduce it. You might want to place some debug code before line 193 of SchemaTest.py to see what the current state of the session is; the error is triggered specifically by a lazy load operation which then requires usage of the associated Session. (any chance that some objects from a different Session are being pulled in ?)
On Aug 22, 2008, at 1:48 AM, Harish K Vishwanath wrote: > The error goes away when I make the session expire_on_commit=False., > But its a nice feature to have, how can I fix the exception below > retaining this feature? > > ---------- Forwarded message ---------- > From: Harish K Vishwanath <[EMAIL PROTECTED]> > Date: Fri, Aug 22, 2008 at 11:04 AM > Subject: Facing Invalid Request Error in 0.5beta4r5051 > To: sqlalchemy@googlegroups.com > > > Hello, > > I am getting a sa.exc.InvalidRequestError in SALA 0.5beta4, which > never happened in SQLA 0.4.6 > > SQLA 0.4.6 : sqlalchemy.orm.sessionmaker(bind=None, autoflush=False, > transactional=True) > SQLA 0.5beta4 : sqlalchemy.orm.sessionmaker(bind=None, > autoflush=False, autocommit=False) > > Apart from this, as per the documentation the SQLA 0.5 session is > autoexpire=True, which expires all objects after a commit call. > Below is the traceback of the exception : > > > File "SchemaTest.py", line 193, in ? > user = myDB.CreateTestUser(msg) > File "d:\recogsys\src\python\RSITerm\SQLConvert\SqlDB.py", line > 633, in Create > TestUser > oiUser.SetAuthority('Authority', self) > File "d:\recogsys\src\python\RSITerm\SQLConvert\SqlUser.py", line > 154, in SetA > uthority > self.PostInteraction(rsiDB, 'Authority', str(val), targetUserID) > File "d:\recogsys\src\python\RSITerm\SQLConvert\SqlUser.py", line > 1056, in Pos > tInteraction > rsiDB.AddInteraction(iao) > File "d:\recogsys\src\python\RSITerm\SQLConvert\SqlDB.py", line > 418, in AddInt > eraction > return interaction.InteractionID > File "c:\python24\lib\site-packages\SQLAlchemy-0.5.0beta4dev_r5051- > py2.4.egg\s > qlalchemy\orm\attributes.py", line 135, in __get__ > return self.impl.get(instance_state(instance)) > File "c:\python24\lib\site-packages\SQLAlchemy-0.5.0beta4dev_r5051- > py2.4.egg\s > qlalchemy\orm\attributes.py", line 319, in get > value = callable_() > File "c:\python24\lib\site-packages\SQLAlchemy-0.5.0beta4dev_r5051- > py2.4.egg\s > qlalchemy\orm\attributes.py", line 877, in __call__ > class_manager.deferred_scalar_loader(self, [ > File "c:\python24\lib\site-packages\SQLAlchemy-0.5.0beta4dev_r5051- > py2.4.egg\s > qlalchemy\orm\mapper.py", line 1701, in _load_scalar_attributes > result = session.query(mapper)._get(identity_key, > refresh_state=state, only_ > load_props=attribute_names) > File "c:\python24\lib\site-packages\SQLAlchemy-0.5.0beta4dev_r5051- > py2.4.egg\s > qlalchemy\orm\query.py", line 1181, in _get > return q.all()[0] > File "c:\python24\lib\site-packages\SQLAlchemy-0.5.0beta4dev_r5051- > py2.4.egg\s > qlalchemy\orm\query.py", line 979, in all > return list(self) > File "c:\python24\lib\site-packages\SQLAlchemy-0.5.0beta4dev_r5051- > py2.4.egg\s > qlalchemy\orm\query.py", line 1044, in __iter__ > return self._execute_and_instances(context) > File "c:\python24\lib\site-packages\SQLAlchemy-0.5.0beta4dev_r5051- > py2.4.egg\s > qlalchemy\orm\query.py", line 1047, in _execute_and_instances > result = self.session.execute(querycontext.statement, > params=self._params, m > apper=self._mapper_zero_or_none(), _state=self._refresh_state) > File "c:\python24\lib\site-packages\SQLAlchemy-0.5.0beta4dev_r5051- > py2.4.egg\s > qlalchemy\orm\session.py", line 744, in execute > return self.__connection(engine, close_with_result=True).execute( > File "c:\python24\lib\site-packages\SQLAlchemy-0.5.0beta4dev_r5051- > py2.4.egg\s > qlalchemy\orm\session.py", line 711, in __connection > return self.transaction._connection_for_bind(engine) > File "c:\python24\lib\site-packages\SQLAlchemy-0.5.0beta4dev_r5051- > py2.4.egg\s > qlalchemy\orm\session.py", line 309, in _connection_for_bind > self._assert_is_active() > File "c:\python24\lib\site-packages\SQLAlchemy-0.5.0beta4dev_r5051- > py2.4.egg\s > qlalchemy\orm\session.py", line 243, in _assert_is_active > raise sa_exc.InvalidRequestError( > sqlalchemy.exc.InvalidRequestError: The transaction is inactive due > to a rollbac > k in a subtransaction. Issue rollback() to cancel the transaction. > > The line rsiDB.AddInteraction(iao), calls a commit() after adding > the object. In SQLA0.5beta4, the object which was attached to the > session is expired after commit? The next statment which is trying > to return object.id, is issuing another query but is getting an > inactive transaction and hence the error. Correct? > > This doesn't happen in SQLA 0.4.6. How can I fix this error? Please > note that I am handling all exceptions that can be raised by a > commit() call , issuing a rollback and reporting them. But I dont > seen any rollbacks at all, but even then the exception says so. > Appreciate any inputs. > > Thanks, > Harish > > > > > -- > Regards, > Harish > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~----------~----~----~----~------~----~------~--~---