2015-07-10 68 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