It's been hard to follow what has actually been tried, but I just wanted to
point some stuff out about zope.sqlalchemy (the code for it is literally 1
small file and shouldn't be talked about with such a scary tone).

When doing transaction.savepoint() it returns a savepoint object that calls
"session.begin_nested()". and when you call rollback on that savepoint
object it calls "session.rollback()". I think that is identical to
SQLAlchemy's expected use. For example:

sp = transaction.savepoint() # session.begin_nested()
try:
    # do stuff
except IntegrityError:
    sp.rollback() # session.rollback()

# do more stuff
transaction.commit() # or ideally don't commit and let pyramid_tm do that
part for you

On Tue, Nov 15, 2011 at 9:19 AM, Michael Bayer <[email protected]>wrote:

>
> On Nov 15, 2011, at 7:09 AM, Vlad K. wrote:
>
> >
> >
> > Why I didn't think of this earlier? Transaction complains if you use
> session.commit() or session.begin_nested() directly, wants you to use
> transaction.commit() and transaction.savepoint() instead and it just didn't
> occur to me to try session.rollback() nevertheless (and in my mind
> transaction.abort() == session.rollback() which now I see is NOT the same),
> and trying savepoint.rollback() fails, I assumed session.rollback() was
> called by Transaction since the SQL debug output clearly shows savepoint
> rollback being emitted, so I went to search for another solution.
> >
> > Aside from me being silly for not trying this before (and it is even
> suggested by the InvalidRequestError!), it is a bit illogical to have to
> use transaction.savepoint() and then use session.rollback() instead of
> savepoint.rollback().
>
>
> glad you figured this out.   Now we need to adjust zope.sqlalchemy's API
> and/or documentation so that the SAVEPOINT use case is made clear.    I
> would think that since SAVEPOINTs can be per-connection,  perhaps
> zope.sqlalchemy would support begin_nested() on individual sessions...or
> maybe not.
>
>
> --
> 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.
>
>


-- 

Michael

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

Reply via email to