OK, thanks very much.
My wrong assumption was that saves within the hook functions will make
it into the current flush.
Preceding the commit() with a manual flush, causes the commit to flush
this new saves (that occured in the flush).
Makes sense now :-)



On May 24, 2:52 am, Michael Bayer <[EMAIL PROTECTED]> wrote:
> On May 23, 2008, at 6:54 PM, Moshe C. wrote:
>
>
>
> > I traced what is happening in the code.
> > I don't fully understand it but I hope the following will help.
> > The crucial point is that in my after_update() method I create a
> > mapped object and call session.save()  using the same session (but
> > different table).
>
> session.save() within a mapper extension's before/after update/insert
> does nothing for the span of that flush.  The full list of objects to
> be sent to the database is already determined at that point and new
> objects in the session won't get flushed until the next flush (which
> in this case is outside of the commit()).
>
> if you'd like to affect the flush plan upon flush(), you'd have to
> implement before_flush() on a SessionExtension.  Or just stick to
> manually calling flush() if that solves the particular ordering issue.
>
> > This is the sequence of events:
> > - I call session.commit()
> > - session._prepare_impl is called and the "if self.autoflush:" is
> > entered and flush() is called
> > - my after_update() is called
> > - session commit is called again from within unitofwork.flush()
>
> this is normal.  the unitofwork has its own "transaction", which may
> or may not be a subtransaction.  in this case, its a subtransaction;
> nothing actually happens.
>
>
>
> > - it calls self.transaction.commit() which calls self._prepare_impl()
> > - In this call to _prepare_impl() the "if self.autoflush:" is not
> > entered and there is no flushing
>
> this is because the flush guards against reentrant calls to itself.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com
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