【发布时间】:2021-03-31 10:31:35
【问题描述】:
我有这种情况:
| Note table |
|---------------------|------------------|
| id | parent_id |
|---------------------|------------------|
| 1 | Null |
|---------------------|------------------|
| 2 | 1
|---------------------|------------------|
| 3 | 2
|---------------------|------------------|
| 4 | 3
|---------------------|------------------|
我想要实现的是获得顶级父 ID。 在这种情况下,如果我通过 ID 号 4,我将得到 ID 1,因为 ID 1 是顶级父级。 当它到达 parent_id 上的 null 时,表示该 id 是顶级父级。
我已经尝试过了,但返回的是我传递给函数的 ID。
def get_top_level_Note(self, id: int):
hierarchy = self.db.session.query(Note).filter(Note.id == id).cte(name="hierarchy", recursive=True)
parent = aliased(hierarchy, name="p")
children = aliased(Note, name="c")
hierarchy = hierarchy.union_all(self.db.session.query(children).filter(children.parent_id == parent.c.id))
result = self.db.session.query(Note).select_entity_from(hierarchy).all()
【问题讨论】:
标签: python sqlalchemy common-table-expression