2024-10-06 13:31:08 发布
网友
我正在使用pythonigraph并尝试从MySQL查询结果生成一个有向加权图。我在数据集中的一个表上运行一个查询,我想基于它创建一个图。基本上,我的查询将返回以下内容:
A B Weight 1 2 3 2 4 5
有人能解释一下如何使用python igraph来实现这一点吗?有可能吗?在
假设您使用适当的DB-api2.0兼容MySQL模块直接从Python查询数据库,那么可以使用Graph.DictList方法来实现您的目标。^{}从字典表示的列表中创建一个图,在获取行时,可以配置MySQL查询游标生成字典而不是元组。这是未经测试的,因为我手头没有MySQL数据库,但它显示了一个总体思想:
Graph.DictList
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是iterable的这一事实,因此它可能无法与其他数据库模块一起工作,但是使用一个通用的DB-api2.0游标并使其可以通过使用iter(cursor.fetchone, None)很容易。在
cursorclass=MySQLdb.cursors.DictCursor
cursor
iter(cursor.fetchone, None)
另外,请确保您在edge_foreign_keys中传递的两个列名与MySQL查询中包含源节点和目标节点的列的名称匹配。查询结果中的任何其他列都将另存为边属性。在
edge_foreign_keys
假设您使用适当的DB-api2.0兼容MySQL模块直接从Python查询数据库,那么可以使用} 从字典表示的列表中创建一个图,在获取行时,可以配置MySQL查询游标生成字典而不是元组。这是未经测试的,因为我手头没有MySQL数据库,但它显示了一个总体思想:
Graph.DictList
方法来实现您的目标。^{这里的重要部分是在连接到数据库时使用
cursorclass=MySQLdb.cursors.DictCursor
。上面的代码片段还利用了cursor
是iterable的这一事实,因此它可能无法与其他数据库模块一起工作,但是使用一个通用的DB-api2.0游标并使其可以通过使用iter(cursor.fetchone, None)
很容易。在另外,请确保您在
edge_foreign_keys
中传递的两个列名与MySQL查询中包含源节点和目标节点的列的名称匹配。查询结果中的任何其他列都将另存为边属性。在相关问题 更多 >
编程相关推荐