use before_flush() for changes to the "dirty" list and such....or if  
you really want things set up for the *next* flush, use  
after_flush_postexec().


On Aug 30, 2008, at 10:08 AM, GustaV wrote:

>
> It almost works.
> A small problem though : when I get and modify instances (a priori not
> loaded before the flush) in after_flush method, they are correctly
> added in the dirty list of the session but the 2nd flush does nothing.
> This is because the identity_map is still flagged as 'not modified'
>
> On 29 août, 18:32, Michael Bayer <[EMAIL PROTECTED]> wrote:
>> in r5069, "extension" can be a list of SessionExtension objects.  You
>> can also append to session.extensions.
>>
>> On Aug 29, 2008, at 11:36 AM, GustaV wrote:
>>
>>
>>
>>> You must be right.
>>> Of course, Turbogears2 already add an extension to the session,  
>>> and it
>>> looks like it is not a list of extension anyway (or maybe in the
>>> latest trunk?).
>>> What the best way then? To subclass the tg2 extension with mine and
>>> continue to call overloaded method from mine? Anything better?
>>
>>> On Aug 29, 3:57 am, Michael Bayer <[EMAIL PROTECTED]> wrote:
>>>> On Aug 28, 2008, at 6:57 PM, GustaV wrote:
>>
>>>>> Hi all.
>>>>> I'm currently working on a map (like in geography :) )
>>
>>>>> When a new tile in inserted in the DB, I'm using an extension  
>>>>> mapper
>>>>> to update some neighbor's properties (like the neighbors count).  
>>>>> The
>>>>> after_insert method helps a lot... but:
>>>>> When I modify another object than the one being inserted in the
>>>>> after_insert method, the modification happens in the python  
>>>>> object,
>>>>> but doesn't occur is the DB. The commit at the end does not seem  
>>>>> to
>>>>> have an effect.
>>
>>>>> What should I do?
>>
>>>> modifications to objects inside of flush() aren't going to  
>>>> propigate
>>>> the same way as when they're outside of the flush().   Within
>>>> MapperExtension you should generally just do things with the
>>>> connection (i.e., issue SQL directly).
>>
>>>> Otherwise, we have SessionExtension which has a before_flush()  
>>>> hook,
>>>> and you can poke around inside the Session and change things freely
>>>> before anything flush()-related occurs.  The catch there is that
>>>> you'd
>>>> probably want to be using the latest 0.5 trunk for that (post  
>>>> beta3)
>>>> since we've fixed it up a bit to work in a more useful way.   I  
>>>> find
>>>> that using before_flush() and after_flush() is generally a better  
>>>> way
>>>> to go for dependent changes/SQL to be issued since you aren't doing
>>>> things inside of the flush() itself, where its hard to predict when
>>>> things will actually happen.
> >


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