Hi Todd,

thanx for the input. can u clarify some doubts.
if u are not using the DBSession(ZopeTransactionExtension) object, how
do u handle the transactions?
how are u handling the commit/rollback? do u begin a txn and commit it
everytime?
what is the settings for the session object(autoflush, aoticommit)?

thnx

On May 5, 6:51 pm, Todd Blanchard <[email protected]> wrote:
> I've had the same problem.  I tried creating the session without the 
> ZopeTransactionExtension and found that the Admin UI does not work without 
> it.  So I've created two sessions.  DBSession has the transaction object, 
> another (called session) does not.
>
> I use session in my code, DBSession just exists for Admin.
>
> Seems to work but I do not like this transaction extension thingy and wish it 
> were not part of TG.
>
> On May 5, 2010, at 6:40 AM, rajasekhar911 wrote:
>
>
>
> > Hi
>
> > I am using TG2 in a multithreaded app.
> > i have some doubts on how to use the session and transaction.
>
> > 1)DBSession is created in the following way
> > from zope.sqlalchemy import ZopeTransactionExtension
> > from sqlalchemy.orm import scoped_session, sessionmaker
> > maker = sessionmaker(autoflush=True,
> > autocommit=False,expire_on_commit=False,
> >                     extension=ZopeTransactionExtension())
> > DBSession = scoped_session(maker)
>
> > at some places in my code i need to do a manual commit, so that the
> > updated data
> > will be available to all requests. for this i do transaction.commit().
> > but after this commit,
> > if i access the session objects, i get the following error
> > UnboundExecutionError: Parent instance <Entity at 0x2aaab05251d0> is
> > not bound to a Session; lazy load operation of attribute 'ha' cannot
> > proceed
>
> > to avoid this error i re-fetch the obj from db.
> > is this the way it is supposed to be?
>
> > if i try to do DBSession.commit() it throws an error
> > Error - exceptions.AssertionError: Transaction must be committed using
> > the transaction manager
> > URL:http://127.0.0.1:8091/test
> > File '/tg2env/lib/python2.4/site-packages/WebError-0.10.1-py2.4.egg/
> > weberror/errormiddleware.py', line 162 in __call__
> >  app_iter = self.application(environ, sr_checker)
> > File '/tg2env/lib/python2.4/site-packages/TurboGears2-2.0rc1.-
> > py2.4.egg/tg/configuration.py', line 643 in wrapper
> >  return app(environ, start_response)
> > File '/tg2env/lib/python2.4/site-packages/TurboGears2-2.0rc1.-
> > py2.4.egg/tg/configuration.py', line 543 in remover
> >  return app(environ, start_response)
> > File '/tg2env/lib/python2.4/site-packages/repoze.tm2-1.0a4-py2.4.egg/
> > repoze/tm/__init__.py', line 19 in __call__
> >  result = self.application(environ, save_status_and_headers)
> > File '/tg2env/lib/python2.4/site-packages/repoze.who-1.0.10-py2.4.egg/
> > repoze/who/middleware.py', line 107 in __call__
> >  app_iter = app(environ, wrapper.wrap_start_response)
> > File '/tg2env/lib/python2.4/site-packages/ToscaWidgets-0.9.7.2-
> > py2.4.egg/tw/core/middleware.py', line 36 in __call__
> >  return self.wsgi_app(environ, start_response)
> > File '/tg2env/lib/python2.4/site-packages/ToscaWidgets-0.9.7.2-
> > py2.4.egg/tw/core/middleware.py', line 59 in wsgi_app
> >  resp = req.get_response(self.application)
> > File 'build/bdist.linux-x86_64/egg/webob/__init__.py', line 1324 in
> > get_response
> > File 'build/bdist.linux-x86_64/egg/webob/__init__.py', line 1293 in
> > call_application
> > File '/tg2env/lib/python2.4/site-packages/ToscaWidgets-0.9.7.2-
> > py2.4.egg/tw/core/resource_injector.py', line 67 in _injector
> >  resp = req.get_response(app)
> > File 'build/bdist.linux-x86_64/egg/webob/__init__.py', line 1324 in
> > get_response
> > File 'build/bdist.linux-x86_64/egg/webob/__init__.py', line 1293 in
> > call_application
> > File '/tg2env/lib/python2.4/site-packages/Beaker-1.4-py2.4.egg/beaker/
> > middleware.py', line 73 in __call__
> >  return self.app(environ, start_response)
> > File '/tg2env/lib/python2.4/site-packages/Beaker-1.4-py2.4.egg/beaker/
> > middleware.py', line 152 in __call__
> >  return self.wrap_app(environ, session_start_response)
> > File '/tg2env/lib/python2.4/site-packages/Routes-1.10.3-py2.4.egg/
> > routes/middleware.py', line 130 in __call__
> >  response = self.app(environ, start_response)
> > File '/tg2env/lib/python2.4/site-packages/Pylons-0.9.7-py2.4.egg/
> > pylons/wsgiapp.py', line 125 in __call__
> >  response = self.dispatch(controller, environ, start_response)
> > File '/tg2env/lib/python2.4/site-packages/Pylons-0.9.7-py2.4.egg/
> > pylons/wsgiapp.py', line 324 in dispatch
> >  return controller(environ, start_response)
> > File '/m2svn/trunk/src/convirt/web/convirt/convirt/lib/base.py', line
> > 32 in __call__
> >  return TGController.__call__(self, environ, start_response)
> > File '/tg2env/lib/python2.4/site-packages/Pylons-0.9.7-py2.4.egg/
> > pylons/controllers/core.py', line 221 in __call__
> >  response = self._dispatch_call()
> > File '/tg2env/lib/python2.4/site-packages/Pylons-0.9.7-py2.4.egg/
> > pylons/controllers/core.py', line 172 in _dispatch_call
> >  response = self._inspect_call(func)
> > File '/tg2env/lib/python2.4/site-packages/Pylons-0.9.7-py2.4.egg/
> > pylons/controllers/core.py', line 107 in _inspect_call
> >  result = self._perform_call(func, args)
> > File '/tg2env/lib/python2.4/site-packages/TurboGears2-2.0rc1.-
> > py2.4.egg/tg/controllers.py', line 775 in _perform_call
> >  result = DecoratedController._perform_call(
> > File '/tg2env/lib/python2.4/site-packages/TurboGears2-2.0rc1.-
> > py2.4.egg/tg/controllers.py', line 142 in _perform_call
> >  output = controller(*remainder, **dict(params))
> > File '/m2svn/trunk/src/convirt/web/convirt/convirt/controllers/
> > root.py', line 171 in test
> >  DBSession.commit()
> > File '/tg2env/lib/python2.4/site-packages/SQLAlchemy-0.5.6-py2.4.egg/
> > sqlalchemy/orm/scoping.py', line 123 in do
> >  return getattr(self.registry(), name)(*args, **kwargs)
> > File '/tg2env/lib/python2.4/site-packages/SQLAlchemy-0.5.6-py2.4.egg/
> > sqlalchemy/orm/session.py', line 673 in commit
> >  self.transaction.commit()
> > File '/tg2env/lib/python2.4/site-packages/SQLAlchemy-0.5.6-py2.4.egg/
> > sqlalchemy/orm/session.py', line 378 in commit
> >  self._prepare_impl()
> > File '/tg2env/lib/python2.4/site-packages/SQLAlchemy-0.5.6-py2.4.egg/
> > sqlalchemy/orm/session.py', line 354 in _prepare_impl
> >  ext.before_commit(self.session)
> > File '/tg2env/lib/python2.4/site-packages/zope.sqlalchemy-0.4-
> > py2.4.egg/zope/sqlalchemy/datamanager.py', line 201 in before_commit
> >  assert zope_transaction.get().status == 'Committing', "Transaction
> > must be committed using the transaction manager"
> > AssertionError: Transaction must be committed using the transaction
> > manager
>
> > --
> > You received this message because you are subscribed to the Google Groups 
> > "TurboGears" group.
> > To post to this group, send email to [email protected].
> > To unsubscribe from this group, send email to 
> > [email protected].
> > For more options, visit this group 
> > athttp://groups.google.com/group/turbogears?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups 
> "TurboGears" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to 
> [email protected].
> For more options, visit this group 
> athttp://groups.google.com/group/turbogears?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"TurboGears" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/turbogears?hl=en.

Reply via email to