Hi Michael, Sorry to be a pain, but will these patches be applied to 7.10? My app needs a lot of mods for it to work in 8.0.
If not don't worry, I guess it is time for me to move on to 8. I'll try it out this weekend. Thanks On Friday, April 26, 2013 8:33:45 AM UTC+10, Michael Bayer wrote: > > I may have come up with a really great solution for all of this, if you'd > like to try the branch I have at https://bitbucket.org/zzzeek/sa_2714 - > all the original use cases seem to be working. > > I'll be testing this branch over the next day or so and will have it > committed soon. 0.8.1 is also due for a release. > > > > > On Apr 24, 2013, at 6:42 PM, gvv <[email protected] <javascript:>> wrote: > > Hi Michael, > > Thank you very much for your help and quick response. > > The workaround worked. > > I really like the simplicity of the query api that i automate the > generation of it. > I will try to incorporate the workaround. > > Thanks again > > On Thursday, April 25, 2013 7:31:49 AM UTC+10, Michael Bayer wrote: >> >> Here's a technique you should be able to use as a workaround: >> >> 1. for every mapper that you're joining *to* which is also a joined >> inheritance subclass, transform it into an aliased() construct >> 2. any join involving an aliased() construct, construct the ON criterion >> manually. >> >> These two techniques should bypass all the automation in query.join() >> that's failing, such as: >> >> from sqlalchemy.orm import aliased >> >> up = aliased(UserPerson) >> pa = aliased(PersonAddress) >> >> session.query(User).\ >> outerjoin(up, up.ItemUserPerson_Id == User.Id).\ >> outerjoin(pa, pa.ItemPerson_Id == up.Id).\ >> outerjoin(pa.Emails).\ >> outerjoin(pa.Phones).\ >> first() >> >> >> >> >> On Apr 24, 2013, at 1:38 PM, Michael Bayer <[email protected]> >> wrote: >> >> oh. this *fails in 0.7 also*. I thought this was a regression. >> Yeah, this query is a little crazier than we've planned for, I can see the >> general thing it's failing to do but will have to see what's involved to >> get it going. But not a regression is good news at least. >> >> >> On Apr 24, 2013, at 8:35 AM, gvv <[email protected]> wrote: >> >> Hi All, >> >> using 7.10 but falls over also in 8.0. >> >> User has a One2One UserPerson. >> UserPerson inherits from Person. >> Person has a One2Many PersonAddress. >> PersonAddress inherits from Address. >> Address has a One2Many Phone and One2Many Email. >> >> The following query falls over with an (OperationalError) no such column: >> Address.Id. >> >> session.query(User, UserPerson, PersonAddress).filter(User.Id == 1).\ >> >> outerjoin(User.Personal,UserPerson.Addresses,PersonAddress.Phones,PersonAddress.Emails).first() >> >> What am I doing wrong ? >> >> Thanks in advance for your help. >> >> >> sqlalchemy.exc.OperationalError: (OperationalError) no such column: >> Address.Id u'SELECT "User"."Id" AS "User_Id", anon_1."UserPerson_Id" AS >> "anon_1_UserPerson_Id", anon_1."Person_Id" AS "anon_1_Person_Id", >> anon_1."Person_PersonType" AS "anon_1_Person_PersonType", >> anon_1."UserPerson_ItemUserPerson_Id" AS >> "anon_1_UserPerson_ItemUserPerson_Id", anon_2."PersonAddress_Id" AS >> "anon_2_PersonAddress_Id", anon_2."Address_Id" AS "anon_2_Address_Id", >> anon_2."Address_AddressType" AS "anon_2_Address_AddressType", >> anon_2."PersonAddress_ItemPerson_Id" AS >> "anon_2_PersonAddress_ItemPerson_Id" \nFROM "User" LEFT OUTER JOIN (SELECT >> "Person"."Id" AS "Person_Id", "Person"."PersonType" AS "Person_PersonType", >> "UserPerson"."Id" AS "UserPerson_Id", "UserPerson"."ItemUserPerson_Id" AS >> "UserPerson_ItemUserPerson_Id" \nFROM "Person" JOIN "UserPerson" ON >> "UserPerson"."Id" = "Person"."Id") AS anon_1 ON >> anon_1."UserPerson_ItemUserPerson_Id" = "User"."Id" LEFT OUTER JOIN (SELECT >> "Address"."Id" AS "Address_Id", "Address"."AddressType" AS >> "Address_AddressType", "PersonAddress"."Id" AS "PersonAddress_Id", >> "PersonAddress"."ItemPerson_Id" AS "PersonAddress_ItemPerson_Id" \nFROM >> "Address" JOIN "PersonAddress" ON "PersonAddress"."Id" = "Address"."Id") AS >> anon_2 ON anon_1."Person_Id" = anon_2."PersonAddress_ItemPerson_Id" LEFT >> OUTER JOIN "Phone" ON anon_2."Address_Id" = "Phone"."ItemPhone_Id" LEFT >> OUTER JOIN "Email" ON "Address"."Id" = "Email"."ItemEmail_Id" \nWHERE >> "User"."Id" = ?\n LIMIT ? OFFSET ?' (1, 1, 0) >> >> >> >> -- >> 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. >> >> >> <test.py><decl_enum.py> >> >> >> >> -- >> 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] <javascript:>. > To post to this group, send email to [email protected]<javascript:> > . > 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.
