InvalidRequestError: SQL 表达式、列或映射实体预期 - 得到“<AliasedClass>”

Dan*_*ego 6 python orm sqlalchemy

我有一个方法,它接受一个对象的查询,将它连接到一个层次结构表,然后从那里将它连接到一个层次结构中的所有兄弟姐妹。我还想将兄弟姐妹作为 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
Run Code Online (Sandbox Code Playgroud)