InvalidRequestError:预期的SQL表达式,列或映射实体 - 得到&#39; <aliasedclass>&#39; </aliasedclass>

时间:2014-12-09 14:17:36

标签: python orm sqlalchemy

我有一个方法,它接受一个对象的查询,将它连接到一个层面表,然后从那里将它连接到一个层次结构中的所有兄弟节点。我还想将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

0 个答案:

没有答案