我有一个方法,它接受一个对象的查询,将它连接到一个层面表,然后从那里将它连接到一个层次结构中的所有兄弟节点。我还想将siblings作为SQLAlchemy ORM对象添加到查询中,以便我可以轻松地检索它们。但是,尽管sqlalchemy允许我从兄弟中添加单个字段,但添加别名本身会抛出InvalidRequestError。
我可以使用什么语法来让SQLalchemy将兄弟别名的内容作为完整的Thing对象返回?
def siblings( query):
"""query is an already created query with a foreign key to Thing
Thing has the id field id, and a foreign key named parent_key to Thing"""
parent = aliased(Thing)
sibling = aliased(Thing)
query = query.join(Thing)
query = query.join(parent, Thing.parent_id==parent.subconstruct_id)
query = query.join(sibling, sibling.parent_id==parent.id)
query = query.add_columns(sibling)
return query