使用python-igraph和mysql结果创建有向加权图

时间:2014-08-20 04:35:55

标签: python mysql igraph

我正在使用python-igraph并尝试从MySQL查询结果生成有向加权图。我在我的数据集中的表上运行查询,我想基于此创建图表。基本上我的查询将返回以下内容:

A B Weight
1 2 3
2 4 5

任何人都可以解释如何使用python-igraph完成它吗?它有可能吗?

1 个答案:

答案 0 :(得分:5)

假设您使用适当的DB-API 2.0兼容的MySQL模块直接从Python查询数据库,您可以使用Graph.DictList方法来实现您的目标。 Graph.DictList从字典列表表示创建图形,并且可以在获取行时将MySQL查询光标配置为产生字典而不是元组。这是未经测试的,因为我手头没有MySQL数据库,但它显示了一般的想法:

import MySQLdb
import MySQLdb.cursors

conn = MySQLdb.connect(host='...', cursorclass=MySQLdb.cursors.DictCursor)

cursor = conn.cursor()
cursor.execute("SELECT source, target, weight FROM whatever")
graph = Graph.DictList(vertices=None, edges=cursor, edge_foreign_keys=('source', target'))

此处的重要部分是在连接到数据库时使用cursorclass=MySQLdb.cursors.DictCursor。上面的代码片段还利用cursor可迭代的事实,因此它可能无法与其他数据库模块一起使用,但是很容易使用通用的DB-API 2.0游标并通过使用{{来使其可迭代1}}。

此外,请确保在iter(cursor.fetchone, None)中传递的两个列名称与MySQL查询中包含源节点和目标节点的列名称相匹配。查询结果中的任何其他列都将保存为边缘属性。