On May 27, 6:39 pm, Michael Bayer <[email protected]> wrote:

> commit() releases the savepoint, if thats whats going on contextually.   It 
> doesnt actually commit the outer transaction if you've last called 
> begin_nested().
>


In a SessionExtension, 'before_commit' is called for nested
transactions, which do not actually perform a database commit, as well
as the RootTransaction, which does issue a COMMIT.

I believe the zope guys overlooked this when they wrote their 'def
before_commit()' method of their SessionExtension, and I am going to
attempt to fix this.

    def before_commit(self, session):
        assert zope_transaction.get().status == 'Committing',
"Transaction must be committed using the transaction manager"

So my question is, first, do you call before_commit() on
SessionExtensions intentionally *even for nested transactions* which
are not performing a database commit?  I assume the answer is "yes,
that is by design".

Which leads to this question: Inside a SessionExtension's
before_commit() method, how can I work out whether this is a nested
transaction vs. the root transaction?

Thanks,
Kent

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