1

假设我将有向图保存在类似于 SQLAlchemy 文档中的示例的表中:http: //docs.sqlalchemy.org/en/rel_0_7/orm/examples.html#directed-graphs

现在我保存一个特定的节点a。使用 SQLAlchemy ORM,我想构建一个查询来查找所有没有边缘的节点a。如何才能做到这一点?

4

1 回答 1

1
def get_non_touching(ref_node):
    qry = session.query(Node)
    qry = qry.filter(~Node.lower_edges.any(Edge.higher_id == ref_node.node_id))
    qry = qry.filter(~Node.higher_edges.any(Edge.lower_id == ref_node.node_id))
    qry = qry.filter(Node.node_id != ref_node.node_id) # exclude node "a" itself as well
    return qry.all()

a = session.query(Node).get(1)
res = get_non_touching(a)
于 2012-12-24T14:43:25.633 回答