Also my DBSession is defined like this DBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension ()))
And I've enabled pyramid_tm in my development.ini file for Pyramid. On Sunday, December 21, 2014 1:09:58 AM UTC+1, alchemy1 wrote: > > I'm getting this error with the following code. Unfortunately none of the > code in the stacktrace is my code, it's all SQLAlchemy stuff, so I can't > tell where I'm causing the problem. > > Traceback (most recent call last): > File > "/home/user/.virtualenvs/project/lib/python3.4/site-packages/pyramid_debugtoolbar-2.2.2-py3.4.egg/pyramid_debugtoolbar/panels/performance.py" > , line 57, in resource_timer_handler > result = handler(request) > File > "/home/user/.virtualenvs/project/lib/python3.4/site-packages/pyramid-1.5.1-py3.4.egg/pyramid/tweens.py" > , line 21, in excview_tween > response = handler(request) > File > "/home/user/.virtualenvs/project/lib/python3.4/site-packages/pyramid_tm-0.8-py3.4.egg/pyramid_tm/__init__.py" > , line 92, in tm_tween > reraise(*exc_info) > File > "/home/user/.virtualenvs/project/lib/python3.4/site-packages/pyramid_tm-0.8-py3.4.egg/pyramid_tm/compat.py" > , line 13, in reraise > raise value > File > "/home/user/.virtualenvs/project/lib/python3.4/site-packages/pyramid_tm-0.8-py3.4.egg/pyramid_tm/__init__.py" > , line 80, in tm_tween > manager.commit() > File > "/home/user/.virtualenvs/project/lib/python3.4/site-packages/transaction-1.4.3-py3.4.egg/transaction/_manager.py" > , line 111, in commit > return self.get().commit() > File > "/home/user/.virtualenvs/project/lib/python3.4/site-packages/transaction-1.4.3-py3.4.egg/transaction/_transaction.py" > , line 280, in commit > reraise(t, v, tb) > File > "/home/user/.virtualenvs/project/lib/python3.4/site-packages/transaction-1.4.3-py3.4.egg/transaction/_compat.py" > , line 55, in reraise > raise value > File > "/home/user/.virtualenvs/project/lib/python3.4/site-packages/transaction-1.4.3-py3.4.egg/transaction/_transaction.py" > , line 271, in commit > self._commitResources() > File > "/home/user/.virtualenvs/project/lib/python3.4/site-packages/transaction-1.4.3-py3.4.egg/transaction/_transaction.py" > , line 417, in _commitResources > reraise(t, v, tb) > File > "/home/user/.virtualenvs/project/lib/python3.4/site-packages/transaction-1.4.3-py3.4.egg/transaction/_compat.py" > , line 55, in reraise > raise value > File > "/home/user/.virtualenvs/project/lib/python3.4/site-packages/transaction-1.4.3-py3.4.egg/transaction/_transaction.py" > , line 394, in _commitResources > rm.tpc_vote(self) > File > "/home/user/.virtualenvs/project/lib/python3.4/site-packages/zope.sqlalchemy-0.7.5-py3.4.egg/zope/sqlalchemy/datamanager.py" > , line 103, in tpc_vote > self.tx.commit() > File > "/home/user/.virtualenvs/project/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4-linux-x86_64.egg/sqlalchemy/orm/session.py" > , line 375, in commit > self._assert_active(prepared_ok=True) > File > "/home/user/.virtualenvs/project/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4-linux-x86_64.egg/sqlalchemy/orm/session.py" > , line 223, in _assert_active > raise sa_exc.ResourceClosedError(closed_msg) > sqlalchemy.exc.ResourceClosedError: This transaction is closed > > > Here I try to add a user, and when I flush it if I get an IntegrityError it > means the user already exists. > In this case I search for another object Action. If I get NoResultFound I > create a new one and try to insert it. > And it's here that the exception happens. Any idea how I can fix this? > > > > DBSession.add(user) > try: > DBSession.flush() > except sqlalchemy.exc.IntegrityError as e: > # User already exists > DBSession.rollback() > user = DBSession.query(User).filter(User.email == email).one() > try: > action = DBSession.query(Action).filter(Action.name == name, > Action.param == None).one() > except sqlalchemy.orm.exc.NoResultFound: > action = create_new_action() > DBSession.add(action) > > return HTTPFound(location=request.route_url('page')) > > > > -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at http://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.