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

标签 python mysql igraph

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

A B Weight
1 2 3
2 4 5

谁能解释一下如何使用 python-igraph 完成它?有可能吗?

最佳答案

假设您使用适当的 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 游标并使其可迭代使用 iter(cursor.fetchone, None)

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

关于python - 使用 python-igraph 和 mysql 结果创建有向加权图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25396799/

相关文章:

python - 在 R 中使用 igraph 绘制图形 : edge length proportional to weight

python - 在 Python 中从选定的列表元素中查找最大的数字

php - eloquent上如何统计每组item的数量

php - 在 PHP/MySQL 中隐藏过去的事情

php - html表单将数据输入到mysql数据库

删除无边的自环和顶点

python - Python 中的尖括号

python - 如何从元组列表中提取第一项

python - 计算 Pandas 数据框中的年龄

r - igraph 丢失系统发育树的内部节点结构(as.igraph() 树转换)