2016-11-17 148 views
0

我創建了一個關係,現在我想獲得關係的價值。neo4j通過python獲得關係值

低於我的Python腳本:

from neo4j.v1 import GraphDatabase, basic_auth 
from neo4j.v1 import Record as Record 
result=session.run('''MATCH (:Person {mobile:111111111})-[r]-() RETURN r''') 
listresult= list(result) 
for x in list(result): 
    print x 

返回值:

<Record r=<Relationship id=2 start=26 end=27 type=u'CONTRACT20161118' properties={u'grade': [400], u'month': [20161118]}>> 
<Record r=<Relationship id=1 start=26 end=27 type=u'CONTRACT' properties={u'grade': [800], u'month': [20161117]}>> 

我怎樣才能獲得的記錄類型返回的值?

回答

2

您打印的每個x實際上是一個Record實例。將Record實例視爲結果行:對於您在Cypher中返回的每個別名,每個「行」中都有一個「單元」,與該記錄中的別名相對應。您可以通過與RETURN語句中的訂單對應的數字索引(x[0],x[1])或RETURN語句中分配的實際別名(在這種情況下,因爲您RETURN r,您希望訪問x['r'])訪問這些文件。這將讓你訪問具有您的數據,其中有屬性的實際Relationship實例idtypestartendproperties,最後被關係的分配性質的dict -alike。

一般認爲最好的做法是隻返回你從一個暗號聲明需要的信息,因此,如果您只想關係類型,您的Cypher語句應該RETURN TYPE(r)完成,然後你可以抓住x['TYPE(r)']先手類型。如果您只想要屬性,RETURN PROPERTIES(r)x['PROPERTIES(r)']Record中使用的字符串鍵必須與返回的別名完全匹配;如果您想使其更易於解析,請在RETURN語句(如RETURN TYPE(r) AS a)和相應的x['a']中分配別名。

順便說一句,你也不需要進口從neo4j.v1任何東西,除了GraphDatabasebasic_auth,一切應該在幕後通過GraphDatabase衍生方法實例化。

+0

你是對的!謝謝 !我改變這個結果= session.run('''MATCH(:Person {mobile:15309912652}) - [r] - ()RETURN PROPERTIES(r)''') # for result in: print x [ 'PROPERTIES(R)'] – zhaowei