On Feb 22, 2008, at 5:29 AM, Christoph Zwerschke wrote:

>
> In TurboGears 1, requests are encapsulated between a session.begin()  
> and
> session.commit() call (or session.rollback(), if there was an error).
>
> Starting with SA 0.4.3, the commit() raises an exception if the
> transaction has been already rolled back in the request (explicitly or
> due to an error). So TurboGears needs to check whether the transaction
> is active before the session.commit() call. We currently do this by
> storing the transaction as the return value of session.begin() and  
> then
> checking transaction.is_active (or transaction.session.transaction for
> earlier SA versions).
>
> This gets complicated since the transaction may be restarted during a
> request and can change. So I think it would be handy to tell directly
> from the session whether the transaction is active or not.
>
> We are using *scoped* sessions in TruboGears, and the problem is that
> the transaction attribute is not available in ScopedSessions, so I can
> not check for session.transaction.is_active. I can get the original
> Session by calling session, so session().transaction.is_active would
> work, but it does not feel right. I guess it is by intent that the
> session attributes are not visible in scoped sessions.
>
> So how about adding a property is_active to the Session that would  
> call
> session.transaction.is_active? Then you could do:
>
> if session.is_active:
>    session.commit()
>

thats fine...but also why cant you just say try: session.commit()  
except: session.rollback(); raise   ?




--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" 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/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to