【发布时间】:2017-10-22 09:00:11
【问题描述】:
我正在使用带有 Neo4j 3.2.0 的 py2neo 3.1.2 版本,我对此有疑问。在 Neo4J 的 Web 界面上,我可以运行以下查询来获取节点 ID:
MATCH (n:Person) RETURN ID(n)
我想知道 py2neo API 中是否有做同样事情的东西。我已经检查了Node 对象,但我找不到任何关于它的信息。
【问题讨论】:
我正在使用带有 Neo4j 3.2.0 的 py2neo 3.1.2 版本,我对此有疑问。在 Neo4J 的 Web 界面上,我可以运行以下查询来获取节点 ID:
MATCH (n:Person) RETURN ID(n)
我想知道 py2neo API 中是否有做同样事情的东西。我已经检查了Node 对象,但我找不到任何关于它的信息。
【问题讨论】:
我在 Twitter(py2neo 的创建者)上与 @technige 进行了交谈,他的回答是。
啊,对。这有点间接,但你可以这样做:
from py2neo import remote
remote(node)._id
【讨论】:
py2neo,但此答案有效py2neo (4.0.0b12) 的当前版本删除了remote 方法。现在您可以通过访问py2neo.data.Node.identity 属性来获取NODE ID。这很简单。假设我使用py2neo 查询我的neo4j 数据库,如下所示:
#########################
# 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 查询我们的数据库来确认节点 ID。如果它工作正常,a 和b 应该是同一个节点。让我们做一个测试:
# 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
【讨论】: