我是一个python + neo4j noob。尝试使用我的python flask web应用程序中的py2neo访问graphenedb上的数据。
我花了好几个小时尝试做一些简单的事情。我想要做的就是根据db的属性从db获取一个节点。
尝试以下操作但它返回一个空数组到客户端:
niagara = neo4j.GraphDatabaseService(<my graphenedb url>)
people = niagara.get_or_create_index(neo4j.Node, "People")
results = people.get("alias","BigDog")
return json.dumps(results)
我唯一能够完整地返回节点的是我通过其ID访问它时:
return json.dumps(niagara.get_properties(niagara.node(0)))
任何帮助都会非常壮观。
答案 0 :(得分:5)
尝试NodeSelector
from py2neo import NodeSelector,Graph,Node
graph = Graph('http://127.0.0.1:7474/db/data')
selector = NodeSelector(graph)
user_node = selector.select("Label",property_key=value).first()
这将检索第一个节点; nodeselector返回迭代器你也可以将它转换为列表
答案 1 :(得分:1)
据我所知,您只是创建索引但从未添加您的节点?此外,您可以使用Cypher在neo4j 2.0中透明地执行此操作,请参阅http://docs.neo4j.org/chunked/stable/query-schema-index.html
通过我认为通过Python绑定公开的Cypher REST端点,http://docs.neo4j.org/chunked/milestone/rest-api-cypher.html
答案 2 :(得分:0)
在这种情况下返回一个空数组是正确的行为。您已经创建了一个索引,然后 - 正如Peter所说 - 在执行get
方法之前没有添加任何内容。每个索引入口点可能包含零个或多个节点,并且没有添加任何内容,这将返回一个空集合。
使用get_or_create方法创建一个节点(如果不存在) - 这也应该只返回一个节点。