Python如何使用graphviz画流程图

  介绍

小编给大家分享一下Python如何使用graphviz画流程图,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

<强>问题描述

项目中需要用到流程图,如果用js的echarts处理,不同层级建动态计算位置比较复杂,考虑用Python来实现

<强>测试演示

实现效果如下

 Python如何使用graphviz画流程图

完整代码

import  yaml   import 操作系统   import  ibm_db   得到graphviz  import 有向图   得到datetime  import  datetime         #,db连接   def  db2_query (sql):   时间=conn 才能;ibm_db.connect (   ,,,,=% s;数据库主机名=% s;港口=% s;协议=TCPIP; UID=% s; PWD=% s", %, (   ,,,,,配置[& # 39;db2_databse& # 39;],   ,,,,,配置[& # 39;db2_host& # 39;],   ,,,,,配置[& # 39;db2_port& # 39;],   ,,,,,配置[& # 39;db2_user& # 39;],   ,,,,,配置[& # 39;db2_password& # 39;】   ,,,,,,,,,,,   ,,)      if 才能;康涅狄格州:   ,,,#,执行   ,,,stmt =, ibm_db.exec_immediate(康涅狄格州,sql)   ,,,result =, ibm_db.fetch_both(支撑)      return 因此,,才能支撑,康涅狄格州         #,添加所有的点   def  add_nodes ():   sql =,才能“SELECT  *,得到AML.DEP_OFTEN_TRAD  WHERE  ACCOUNT_NO=? +, ACCOUNT_NO  +,“, ORDER  BY  NUM  DESC  fetch  first  10, rows ;“   ,,,结果,支撑,conn =, db2_query (sql)   时间=nodes 才能;[]   nodes_dict 才能=,{}   nodes_dict才能[ACCOUNT_NO],=, & # 39;一个# 39;      count 才能=0   while 才能;(结果):   ,,,count =, count  + 1   ,,,print(科(奥德(& # 39;一个# 39;),+,计数),+,,,,,+,结果[3])   ,,,dot.node(科(奥德(& # 39;一个# 39;),+,计数),,结果[3],形状=皉ectangle",,颜色=皁range")      ,,,nodes.append(结果[2])   ,,,nodes_dict[结果[2]],=,空空(奥德(& # 39;一个# 39;),+,计数)   ,,,print (& # 39; - - - - - - - - - - - - - - - - - - - - - - - # 39;)   ,,,result =, ibm_db.fetch_both(支撑)      #,才能关闭数据库连接   ibm_db.close才能(康涅狄格州)   nodes.append才能(ACCOUNT_NO)      时间点,return 才能;节点,nodes_dict         #,添加所有的边   def  add_edges(节点):   时间=nodes_back 才能;节点   打印(nodes_back)才能      for 才能;p 拷贝范围(len (nodes_back)):   ,,,nodes_temp =, nodes.copy ()   ,,,from_nodes =, nodes_temp.pop (p)   ,,,print (“len  of  nodes_temp:“, +, str (len (nodes_temp)), +,“, from_nodes:“, +, from_nodes)      ,,,nodes_temp_in =,,,, . join (nodes_temp)   ,,,nodes_temp_in =, & # 39; (& # 39;, +, nodes_temp_in  +, & # 39;) & # 39;      ,,,sql =,“SELECT  *,得到AML.DEP_OFTEN_TRAD  WHERE  ACCOUNT_NO=? +, from_nodes  +,“,以及CNTPRT_ACCOUNT_NO  IN" +, \   ,,,,,nodes_temp_in   结果,,,,,支撑,,conn =, db2_query (sql)   ,,,if (结果):   ,,,,,while (结果):   ,,,,,,,印刷(& # 39;- - - - - - - - - - - - - - - - - - - - - - - # 39;)   ,,,,,,,印刷(结果)   ,,,,,,,印刷(结果[& # 39;CNTPRT_ACCOUNT_NO& # 39;], +, nodes_dict[结果[& # 39;CNTPRT_ACCOUNT_NO& # 39;]])   ,,,,,,,印刷(“add 边缘,“,+,结果[& # 39;TRAD_VAL& # 39;], +,,,:“, +, from_nodes  +,,,:“, +,结果[& # 39;CNTPRT_ACCOUNT_NO& # 39;])   ,,,,,,,dot.edge (nodes_dict [from_nodes], nodes_dict[结果[& # 39;CNTPRT_ACCOUNT_NO& # 39;]],,结果[& # 39;TRAD_VAL& # 39;])   ,,,,,,,result =, ibm_db.fetch_both(支撑)      ,,,,,#,关闭数据库连接   ,,,,,ibm_db.close(康涅狄格州)   return 才能点         if  __name__ ==,“__main__":   yaml_path 才能=,os.path.join (& # 39; . ./& # 39;,, & # 39; config.yaml& # 39;)   with 才能;开放(yaml_path, & # 39; " # 39;), as  f:   ,,,config =, yaml.load (f)      null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

Python如何使用graphviz画流程图