I have a self referential hierarchy structure in a table that I have 
mapped with SA 0.4. What I would like to do is query the table given a 
node, and find its grandchildren based on some criteria in both the 
child and grandchildren nodes. In SQL I would do:

SELECT * FROM nodehierarchy AS grandparent
JOIN nodehierarchy AS parent ON parent.parentuid = grandparent.uid
JOIN nodehierarchy AS child ON child.parentuid = parent.uid
WHERE grandparent.uid = <<some_value>>
AND parent.type=<<different_value>>
AND child.type=<<another_value>>
ORDER BY parent.name, child.name;


Following the third example from 
http://www.sqlalchemy.org/docs/04/mappers.html#advdatamapping_relation_selfreferential_query
I have the following:

grandchildren = session.query(Node).filter(Node.c.type==var1).\
join('Parent', aliased=True).filter(Node.c.type==var2).\
join('Parent',aliased=True, 
from_joinpoint=True).filter(Node.uid==var3).all () # 
order_by(Node.Parent.name, Node.name).all()

grandchildren.sort (key=lambda i: (i.Parent.name,i.name))

However the commented out order_by() doesn't work I get "AttributeError: 
'InstrumentedAttribute' object has no attribute 'name'"
As you can see I am currently sorting client side.


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