Thanks again, Michael. I guess for now I will be using a view as a workaround, yet using your core (brilliant) ideas for the issue.
Thanks a lot for all your great work. Sqlalchemy changed my life :-) Adolfo On Tuesday, August 21, 2012 11:09:05 PM UTC-5, Michael Bayer wrote: > > > On Aug 21, 2012, at 4:34 PM, adolfo wrote: > > > Hi Michael and all.... > > > > I successfully built a "all nodes" relationship following your > guidelines. > > > > As: > > > > > subq1=select([caso_vinculo.c.caso_1_id.label('id1'),caso_vinculo.c.caso_2_id.label('id2')]).union(select([caso_vinculo.c.caso_2_id, > > caso_vinculo.c.caso_1_id])) > > subq2=aliased(subq1) > > > > CasoMapper = mapper(Caso, caso, properties= > > { > > 'LinkedNodes':relation(Caso, secondary=subq2, > > primaryjoin=caso.c.id == > subq2.c.id1, > > secondaryjoin=subq2.c.id2== > caso.c.id), > > So with this property I can get both left and right linked nodes. > > > > > > with: > > CasoAlias=aliased(Caso) > > q1=session.query(Caso.id).outerjoin(CasoAlias.LinkedNodes) > > q1.all() > > works fine > > and once I add a new column from the aliased entity (CasoAlias) > > q2=q1.add_column(CasoAlias.id) > > it compiles fine > > > > SELECT caso.id AS caso_id, caso_1.id AS caso_1_id > > FROM caso AS caso_1 LEFT OUTER JOIN (SELECT caso_vinculo.caso_1_id AS > id1, caso_vinculo.caso_2_id AS id2 > > FROM caso_vinculo UNION SELECT caso_vinculo.caso_2_id AS caso_2_id, > caso_vinculo.caso_1_id AS caso_1_id > > FROM caso_vinculo) AS anon_1 ON caso_1.id = anon_1.id1 LEFT OUTER JOIN > caso ON anon_1.id2 = caso.id > > there's a bug in SQLAlchemy here which I'll have fixed soon, it is > somewhat hilarious though, the unusual naming scheme you're using for > caso_vinculo's columns is conflicting with the labels SQLAlchemy is > assigning. Note in the query, "caso_1.id AS caso_1_id" at the top. > Later on, when it renders "caso_vinculo.caso_1_id" in the subquery, it's > erroneously stepping on the internal column record for the "caso_1_id" > symbol and breaking things. > > If you use different names on the caso_vinculo table for now it should be > fine. > > -- 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/-/Yfy8uSP3ayMJ. To post to this group, send email to sqlalchemy@googlegroups.com. To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.