如何使用py2neo从neo4j读取节点

时间:2014-08-12 11:36:33

标签: neo4j py2neo

我是一个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)))

任何帮助都会非常壮观。

3 个答案:

答案 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方法创建一个节点(如果不存在) - 这也应该只返回一个节点。