Hi Diana & Michael Bayer,
thanks for your help!
So, you both use sqlalchemy 0.8 and I use 0.7.9 and that explains our
different SQL queries.
Now, with the join_depth=1 parameter the unexplainable SQL queries
disappear and there is no more difference between lazy='subquery' and
subqueryload().
But unfortunately now there is an other and far more problematic issue, the
output of showDatabase is incorrect.
I modify my showDatabase() function like this:
def showDatabase(session):
house = session.query(House).one()
for resident in house.residents:
print resident.myChildren
and now only one resident have a children (the men), and the one from the
woman disappear!
How is this possible?
Here is my complete script with output: http://pastebin.com/HRqSWxQ0
Am Freitag, 23. November 2012 06:43:33 UTC+1 schrieb Michael Bayer:
>
>
> On Nov 22, 2012, at 11:16 AM, Martin84 wrote:
>
> Hi Diana & Michael Bayer,
>
> you both have exactly the same results/sql queries, but unfortunately my
> results are different. This is really strange,
> here is my complete python script with my output:
> http://pastebin.com/CyCs90cW
>
>
> As a side note, that script is slightly different. A "lazy='joined'" is
> added to Human.houses. So after your session.close(), then your
> query(Woman), you get "human JOIN woman" which is the query(Woman), then it
> also has "LEFT OUTER JOIN human_house_table LEFT OUTER JOIN house", which
> is your Human.houses lazy="joined". I'd usually not use "lazy" at all in a
> joined inheritance mapping, as there are already too many JOINs happening
> implicitly for there to be extra joins like this coming in.
>
> So then, why you don't see the "subquery". In 0.7, you need join_depth=1
> here, because otherwise, the ORM sees Woman->Child as Human->Human, which
> is a cycle. join_depth=1 means, "it's OK to join one time in this cycle".
>
> In 0.8 this was improved so that Woman->Child isn't seen as a cycle, the
> subclass identity is taken into account - so join_depth can be removed.
> See http://www.sqlalchemy.org/trac/ticket/2481 for a description of this
> issue.
>
> Overall, 0.8 has a lot of improvements to joined inheritance in
> conjunction with eagerloading and with_polymorphic.
>
>
--
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/-/OUUgp8S57XAJ.
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.