2015-07-10 67 views
0

我收到此錯誤消息,當我嘗試解析結果集時,返回MATCH查詢。我想要的是以某種方式將結果集轉換爲字典。我應該說,我知道如何訪問結果集的特定字段 - 例如row['a']['name'],但我不喜歡的是我無法將整個row['a']轉換爲字典或獲得像row['a'].keys()之類的內容。節點對象不可迭代

所以,這是我的嘗試:

res = graph.cypher.execute("MATCH (a:Object {id: 1}) return a") 
for r in res: 
    print r['a']['id'] # this works 

for r in res: 
    print r['a'].keys() # this does not 

#what I want is something like 
{x:y for (x,y) in zip(r['a'].keys(), r['a'].values()} 

回答

1

documentation,它看起來像execute將返回py2neo.cypher.Recordpy2neo.cypher.RecordList對象,那麼它可以遍歷:

for r in res: 
    for v in r['a']: 
     # do something with v 

不幸,看着source code,似乎沒有一種明顯的方法來訪問列名稱,而沒有執行dir(r)並過濾結果,例如[c for c in dir(r) if not c.startswith('_')]

編輯:再看一遍,我猜rRecordr['a']是別的東西。你將不得不看看r['a']使用type(r['a'])有什麼樣的對象,然後看看是否有方法來訪問密鑰。

1

直接連接到Node對象的訪問器是properties屬性的快捷方式。因此,您將需要按照與其他任何字典相同的方式遍歷r["a"].properties

+0

很好的回答!謝謝你,先生! – Jacobian