如何从 python 中的数据库绘制图表

How can I draw diagrams from database in python

如何使用 python 直观地对数据库中的项目建模?

我有一个 Django 项目,目前在管理视图中为我的家庭网络建模。它目前描述了有哪些设备以及它们连接到什么。例如:

Devices:
    Computer1
    Computer2
    Laptop1
    Mobile1
    Router1
    ROuter2

ConnectionTypes:
    Wireless24ghz
    Wireless5ghz
    cat5
    cat5e
    cat6

Connections:
    host1:
        src:Computer1
        dst:Router1
        con_type:cat5e
    trunk1:
        src:Router1
        dst:Router2
        con_type:cat6
    host2:
        src:Mobile1
        dst:Router1
        con_type:Wireless24ghz

数据库比这复杂一点,但我暂时保持简单,因为它不是那么重要。

我想知道的是,如何使用 python 代码以图形方式为我的网络建模以查看数据库表?通过图形模型,我的意思是类似于 Visio 图表的东西,因为我可以看到它并且(不是必需的,但这是一个巨大的好处)通过网页或应用程序与之交互。

是否有提供此类功能的现有 python 库?我知道 JavaScript 适合这种建模,但我完全不确定我将如何去做。

值得注意的是,我并不是追求任何奇特的东西,只需将设备绘制为矩形并将连接绘制为矩形之间的线就足够了。

我很确定没有现成的解决方案。查看graphviz库,做一个管理命令来创建一个DOT图。这是一篇 graphviz 教程文章 http://matthiaseisen.com/articles/graphviz/

如果您正在使用 Django 并且想要一些简单和静态的东西,您可以使用 Pillow(PIL 替代品)提供的 ImageDraw module 将图表绘制成图像 然后将该图像包含在您的应用程序传送到客户端浏览器的网页中。

另外,当然,您可能听说过matplotlib

由于您特别询问有关 Django 的问题,django-extensions 已经为您完成了繁重的工作。看看这个:

http://django-extensions.readthedocs.org/en/latest/graph_models.html

祝你好运!

作为替代方案,我一直在使用 blockdiag 的 nwdiag 库在代码中创建网络图。

http://blockdiag.com/en/nwdiag/

最棒的是 blockdiag 有很多其他有用的库可用于此类任务,例如数据包和机架图。