[英]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.