簡體   English   中英

使用python-igraph和mysql結果創建有向加權圖

[英]Create a directed weighted graph using python-igraph and mysql results

我正在使用python-igraph並嘗試從MySQL查詢結果生成有向加權圖。 我在數據集中的一個表上運行查詢,我想基於此創建圖形。 基本上我的查詢將返回以下內容:

A B Weight
1 2 3
2 4 5

任何人都可以解釋如何使用python-igraph嗎? 有可能嗎?

假設您正在使用適當的DB-API 2.0兼容MySQL模塊直接從Python查詢數據庫,則可以使用Graph.DictList方法實現您的目標。 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是可迭代的這一事實,因此它可能無法與其他數據庫模塊一起使用,但是只需使用iter(cursor.fetchone, None)

另外,請確保您在edge_foreign_keys中傳遞的兩個列名稱與MySQL查詢中包含源節點和目標節點的列名稱相匹配。 查詢結果中的任何其他列將另存為邊屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM