蟒蛇。图树从数据库递归

时间:2012-01-10 07:32:12

标签: python sql recursion graph

我有一个表“节点”,其中包含字段“id”和“name”,我还有一个表“链接”,它将节点之间的链接链接为多对多。

Node
id | name
1    node1
2    node2
3    node3
4    node4
5    node5
6    node4
7    node5

Link 
id | node_id | node2_id
1        1           2
2        2           3
3        3           5
4        2           4
5        3           6
6        3           7

         node4   node7
          |       |
node1-->node2-->node3-->node6
                  |
                 node5

如何使用python生成嵌套的图形,列表或字典。 我对算法的构造有问题。我有函数get_derrived返回一个派生元素列表。我的代码是:

    c.tree = {}
    def get_tree(node_id):
        for node in get_derrived(node_id):
            if not node in c.tree:
                c.tree[node] = {}
                get_tree(node.id)           
    get_tree(id)

总而言之,我有node1:

c.tree = {node1:{},node2:{},node3:{},node4:{},node5:{},node6:{},node7:{}}

for node2:

c.tree = {node2:{},node4:{},node3:{},node5:{},node6:{},node7:{}}

但我需要dict {node2:{node4:{},node3:{node7:{},node5:{},node6:{}}}}。

2 个答案:

答案 0 :(得分:0)

请从python-graph中查看此example

它显示了如何以编程方式创建一个grah以及如何使用graphviz显示它(如果您使用的是任何Linux发行版,它应该已经安装在您的系统中)。

答案 1 :(得分:0)

使用dot和graphviz。

有些库可以帮助生成点代码,但您可以轻松编写自己的库以将文本转储到文件中。

相关问题