On Sun, 2011-07-03 at 17:34 -0700, YP wrote: > If that was just the commit(), that would be ok (though i'd like to > have the ability to commit easily whenever i want, just like > sqlalchemy allows me). But i have to start a new session after > dbsession.rollback() too.
Same question I guess.. what's the rationale for rolling back yourself? - C > > Thanks. > yp. > > On Jul 4, 3:50 am, Chris McDonough <[email protected]> wrote: > > On Sun, 2011-07-03 at 16:27 -0700, YP wrote: > > > Hi, > > > > > i'm using Pyramid with SQLAlchemy, and i have some problems with > > > ZopeTransactionManager and SQLAlchemy Session. It's that i have to > > > create a new session after every transaction.commit() or > > > transaction.abort() or dbsession.rollback(), then i have to manually > > > populate this new session with all objects that have been added or > > > loaded into the old session, like this: > > > > > dbsession = DBSession() > > > dbsession.add(a) > > > dbsession.add(b) > > > c = dbsession.query(SomeClass).first() > > > ..... etc etc ..... > > > transaction.commit() > > > #and now i have to do it all again: > > > dbsession = DBSession() > > > dbsession.add(a) > > > dbsession.add(b) > > > c = dbsession.query(SomeClass).first() > > > ..... etc etc ..... > > > > > While without transaction manager, i can just do dbsession.commit() or > > > dbsession.rollback(), and the session remains alive, i don't have to > > > create and populate new one. This is much better, unless there is some > > > really easy way to copy everything from old session to new one (which > > > i don't see). > > > > > I understand that if i remove transaction manager from the pipeline, > > > i'll have to manually take care about transactions, commit or rollback > > > somewhere near the app exit point. As far as i can see, that's > > > basically all what the transaction manager is doing. Is that right, or > > > am i missing any other important operations usually performed by the > > > transaction manager? > > > > I guess the real question is this: why are you issuing manual commit > > statements at all? If the answer is "i want newly added items to get an > > id", use dbsession.flush() instead. Is there another reason? > > > > - C > -- You received this message because you are subscribed to the Google Groups "pylons-discuss" 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/pylons-discuss?hl=en.
