2016-11-17 63 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