如何从py2neo获取自动节点ID?

时间:2017-05-22 16:00:24

标签: python neo4j py2neo

我正在使用py2neo 3.1.2版本和Neo4j 3.2.0,我有一个问题。在Neo4J的Web界面上,我可以运行以下查询来获取节点ID:

<form method="POST" action="/dynamic"> {{ form.csrf_token }} {% for team in form.team %} {{ team.csrf_token }} {% for player in team.player %} {{ render_field(player) }} {% endfor %} {% endfor %} </form>

我想知道py2neo API是否有同样的功能。我已经检查了 MATCH (n:Person) RETURN ID(n) 对象,但我找不到任何相关内容。

2 个答案:

答案 0 :(得分:4)

我在Twitter(py2neo&#39; s创建者)与@technige进行了交谈,他的回答是。

好吧,对啊。它有点间接,但你可以这样做:

from py2neo import remote remote(node)._id

答案 1 :(得分:2)

更新:上一个答案不适用于新py2neo,但此答案有效

当前版本的py2neo(4.0.0b12)删除了remote方法。现在,您可以通过访问NODE ID属性来获取py2neo.data.Node.identity。这很简单。我们假设我使用neo4j查询我的py2neo数据库,如下所示:

#########################
# Standard Library Imports
#########################

import getpass

#########################
# Third party imports
#########################

import py2neo

# connect to the graph
graph = py2neo.Graph(password=getpass.getpass())

# enter your cypher query to return your node
a = graph.evaluate("MATCH (n:Person) RETURN n LIMIT 1")

# access the identity attribute of the b object to get NODE ID
node_id = a.identity

我们可以通过使用属性返回的节点id查询我们的数据库来确认NODE ID。如果它正常工作,ab应该是同一个节点。我们来做一个测试:

# run a query but use previous identity attribute
b = graph.evaluate("MATCH (n) WHERE ID(n)={} RETURN n".format(node_id))

# test for equality; if we are right, this evaluates to True
print(a == b)
[Out]: True