Thanks for the details. Makes sense.

Still not consistent with what I'm experiencing. Although consistent with what 
I'm seeing when I put a simple example/test together. I'll keep digging...

— RM

On Feb 12, 2013, at 4:51 PM, Michael Bayer <[email protected]> wrote:

> its called in all SQL loading scenarios including that of relationships.
> 
> A relationship load might not actually result in the object being loaded from 
> the DB in these scenarios:
> 
> 1. the relationship is a simple many-to-one, and the object could be located 
> by primary key from the identity map without emitting a SQL load.
> 
> 2. the relationship emitted the SQL, but as it loaded the rows, the objects 
> matching those rows were already in the identity map, so they weren't 
> reconstructed.
> 
> In both scenarios above, the objects were still guaranteed to be present in 
> the identity map in only three possible ways: 
> 
> 1. they were loaded at some point earlier, in which case your reconstructor 
> was called
> 
> 2. they moved from "pending" to "persistent" , meaning you added them with 
> add(), then they got inserted, so you'd want to make sure
> whatever regular __init__ does is appropriate here
> 
> 3. the objects were detached, and were add()ed back into the session, but 
> this still implies that #1 or #2 were true for a previous Session.
> 
> 
> 
> 
> 
> 
> On Feb 12, 2013, at 5:29 PM, Ryan McKillen <[email protected]> wrote:
> 
>> It doesn't appear that the method decorated by @orm.reconstructor is called 
>> on objects retrieved/loaded as relationships.
>> 
>> Not my desired behavior, but I guess it is consistent with the docs:
>> "When instances are loaded during a Query operation as in 
>> query(MyMappedClass).one(), init_on_load is called."
>> 
>> So if I need it to be executed in a relationship-loading situation, what's 
>> the best way to go about it? Thanks.
>> 
>> — RM
>> 
>> 
>> On Mon, Jan 7, 2013 at 3:36 AM, Ryan McKillen <[email protected]> 
>> wrote:
>>> Worked like a charm. Thanks.
>>> 
>>> — RM
>>> 
>>> 
>>> On Mon, Jan 7, 2013 at 6:26 PM, Michael van Tellingen 
>>> <[email protected]> wrote:
>>>> See 
>>>> http://docs.sqlalchemy.org/en/latest/orm/mapper_config.html#constructors-and-object-initialization
>>>> 
>>>> 
>>>> 
>>>> On Mon, Jan 7, 2013 at 4:47 AM, RM <[email protected]> wrote:
>>>> > I have a class which inherits from Base. My class has a metaclass which
>>>> > inherits from DeclarativeMeta. Among other things, the metaclass adds an
>>>> > __init__ method to the class dictionary. When I instantiate an instance 
>>>> > of
>>>> > my class directly, my __init__ method is invoked, but if I use the ORM to
>>>> > retrieve an instance, my __init__ method is not invoked.
>>>> >
>>>> > A metaclass serves better than a mixin for what I am trying to 
>>>> > accomplish.
>>>> > However, I did experiment with a mixin and saw the same behavior as
>>>> > described above.
>>>> >
>>>> > Any ideas? Many thanks.
>>>> >
>>>> > --
>>>> > You received this message because you are subscribed to the Google Groups
>>>> > "sqlalchemy" group.
>>>> > To view this discussion on the web visit
>>>> > https://groups.google.com/d/msg/sqlalchemy/-/oDj_bHNvP7EJ.
>>>> > 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.
>>>> 
>>>> --
>>>> 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.
>> 
>> 
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "sqlalchemy" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected].
>> To post to this group, send email to [email protected].
>> Visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
>> For more options, visit https://groups.google.com/groups/opt_out.
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "sqlalchemy" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
> For more options, visit https://groups.google.com/groups/opt_out.
>  
>  

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to