Python. Графическое дерево рекурсивное из базы данных - PullRequest
0 голосов
/ 10 января 2012

У меня есть таблица «Node» с полями «id» и «name», также у меня есть таблица «Link», которая связывает Node между собой как многие-ко-многим.

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)

В сумме у меня за узел1:

c.tree = {узел1: {}, узел2: {}, узел3: {}, узел4: {}, узел5: {}, узел6: {}, узел7: {}}

для узла 2:

c.tree = {узел2: {}, узел4: {}, узел3: {}, узел5: {}, узел6: {}, узел7: {}}

Но мне нужен dict {узел2: {узел4: {}, узел3: {узел7: {}, узел5: {}, узел6: {}}}}.

Ответы [ 2 ]

0 голосов
/ 10 января 2012

Используйте точку и графвиз.

Существуют библиотеки, помогающие генерировать точечный код, но вы можете легко написать свою собственную, чтобы выгрузить текст в файл.

0 голосов
/ 10 января 2012

Пожалуйста, посмотрите на этот пример из python-графа.

Он показывает, как программно создать гра и как отображать его, используя graphviz (этодолжен быть уже установлен в вашей системе, если вы используете какой-либо дистрибутив Linux).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...