Thanks for the response.  That (commit) is my suspicion as well.  So,
I was wondering if there is any TG configuration that is driving
this.  I'll try to dig and see if there are any debug settings to show
sqlalchemy DB transactions.  If I am still stumped I will try and post
to the sqlalchemy group (as you suggest).

Thanks.

On Sep 7, 1:26 am, Michael Pedersen <[email protected]> wrote:
> This actually took me a little bit to spot. I can't give a definitive
> answer, but I can provide some explanation.
>
> On your line in the try block where you say that "transaction.doom() works
> if placed here before the query", that's where you give the real clue.
> Somehow, in your setup, a commit is being done before that query gets
> executed. Because of that, you are now in a new transaction when the child
> routine raises its own exception. As you're in a new transaction, you no
> longer can rollback the DBSession.add(urec) that was done.
>
> For this particular issue, I have to strongly recommend contacting the
> SQLAlchemy group. Somehow, a commit is being done, and I'm not capable
> (personally) of figuring out why. Since SQLAlchemy is doing the commit, I
> have to recommend asking them for help debugging why the commit is
> occurring.
>
>
>
> On Mon, Sep 6, 2010 at 8:32 PM, ozwyzard <[email protected]> wrote:
> > Hello,
>
> > I attempted trial and error (and poked around some code), but am not
> > able to figure out the intended method of doing transactions in a TG 2
> > application.
>
> > import transaction
>
> > def parent():
> >    try:
> >        urec = User(name='test', ...)
> >        DBSession.add(urec)
> >        # transaction.doom() works if placed here before the query
> >        newrec = DBSession.query(User).filter(User.name='test', ...
> > blah)
> >        child_routine_that_does_dependent_DB_ops()  # DB op works but
> > routine raises an exception for TESTING
> >    except Exception, e:
> >        transaction.doom()  # Does not remove the urec record from DB
>
> > What is the correct method for doing transaction rollbacks?  Does the
> > rollback not occur after a successful query?  Do I need to modify some
> > config item?
>
> > (I tried setting DBSession.autoflush = False,
> > transaction.manager.abort(), DBSession.rollback(), but none of these
> > work).
>
> > Thanks!
>
> > --
> > 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]<turbogears%[email protected]>
> > .
> > For more options, visit this group at
> >http://groups.google.com/group/turbogears?hl=en.
>
> --
> Michael J. Pedersen
> My IM IDs: Jabber/[email protected], ICQ/103345809, AIM/pedermj022171
>           Yahoo/pedermj2002, MSN/[email protected]

-- 
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