Python 如何使用sqlalchemy查询以从邻接列表检索所有对象?

Python 如何使用sqlalchemy查询以从邻接列表检索所有对象?,python,sqlalchemy,Python,Sqlalchemy,使用这种类型的模型时,如何查询父对象的所有链接对象 换句话说,我需要一个包含所有子对象和子对象的子对象以及子对象的子对象的子对象的列表…直接查询节点对象上的子对象。查看sqlalchemy文档中的lazy参数。这将决定何时查询列表(使用对象本身或单独查询) 参考以下代码 class Node(Base): __tablename__ = 'node' id = Column(Integer, primary_key=True) parent_id = Column(Int

使用这种类型的模型时,如何查询父对象的所有链接对象

换句话说,我需要一个包含所有子对象和子对象的子对象以及子对象的子对象的子对象的列表…

直接查询节点对象上的子对象。查看sqlalchemy文档中的lazy参数。这将决定何时查询列表(使用对象本身或单独查询)

参考以下代码

class Node(Base):
    __tablename__ = 'node'
    id = Column(Integer, primary_key=True)
    parent_id = Column(Integer, ForeignKey('node.id'))
    data = Column(String(50))
    children = relationship("Node",
                backref=backref('parent', remote_side=[id])
            )

注意:儿童名单将只包含直系子女。为了得到孙子和更多,根据需要一次又一次地查询,检查lazy参数以获取更多信息

这是我最后做的,可能不是最好的,但它起了作用

parent = Node.query.filter_by(id=1).first()
children_list = n.children

遍历树可以使用递归CTE:,
pks = []

def get_pk(o):
    pks.append(o.pk)
    for a in o.attachments:
        get_pk(a)

get_pk(parent)