当我尝试解析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()}
答案 0 :(得分:1)
从documentation开始,execute
似乎正在返回py2neo.cypher.RecordList
个py2neo.cypher.Record
个对象,然后可以迭代这些对象:
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('_')]
。
编辑:再看一遍,我猜r
是Record
而r['a']
是其他内容。您必须查看r['a']
使用type(r['a'])
的对象类型,然后查看是否有方法可以访问密钥。
答案 1 :(得分:1)
直接附加到Node对象的访问者是properties
属性的快捷方式。因此,您需要以与其他字典相同的方式遍历r["a"].properties
。