我的简单代码是从neo4j中的节点检索属性。
results = graph.cypher.execute("MATCH (m)-[:AB]->(a) "
"RETURN m.searchField as origin, a.searchField as destination "
"LIMIT {limit}", {"limit": 100})
nodes = []
rels = []
i = 0
for r in results:
print (r)
ent1 = {"title": r.origin, "label": "entity"}
但服务器返回“NameError(”全局名称'searchField'未定义“,”)“当然我错过了什么,但我很困惑,Cypher查询中的searchField是错误的对象。 这仍然是py2neo 2.0.8。 谢谢你的任何指针,hj
后期编辑: 感谢您抽出宝贵时间来研究这个问题。两个元素进一步困扰我这个错误: 1. cypher中的查询很好,并且在neo4j-shell中返回我期望的结果而没有问题 2.当我将瓶子作为独立运行(在main中运行(port = 8080))时,此代码似乎工作正常,但是当我在apache服务器下将其作为wsgi运行时失败。我想知道是否存在运行用户或代码某些部分的上下文的问题。
答案 0 :(得分:0)
您是否在节点上有一个名为searchField的属性? 如果没有,查询将失败。
顺便说一句,对查询使用字符串比较容易:
query = '''
MATCH (m)-[:AB]->(a)
RETURN m.searchField as origin, a.searchField as destination
LIMIT {limit}
'''
result = graph.cypher.execute(query, limit='foo')
答案 1 :(得分:0)
搞定了!它与代码无关,但我不知道通过wsgi提供的新python代码的任何刷新都需要至少重新加载apache。
sudo service apache2 reload
通过这种方式,我获得了与直接服务器相同(和正确)的行为。错误是旧版本代码的结果......新手的错误!
感谢和抱歉,麻烦,hj