我输入了directed acyclic graph(不一定连接)的SQLite数据库,其中节点存储为
node_id | name
1 | a
2 | b
3 | c
4 | d
5 | e
6 | f
并将边存储为:
edge_id | source | target
1 | 1 | 2
2 | 1 | 3
3 | 1 | 4
4 | 2 | 5
这是一个玩具示例,我的数据库有大约10 ^ 4到10 ^ 5个节点(小但不是很简单)。我需要从给定节点查询所有“子节点”节点。举个例子:
input | expected output
1 | [2,3,4,5]
2 | [5]
3 | []
6 | []
我现在正在使用python的SQLite3
模块执行此操作,但我必须递归地为每个节点进行select调用 - 这可能会非常昂贵。有没有一种聪明的方法可以做到这一点,也许只需一次SQLite调用?