如何从 py2neo 获取自动节点 ID?
How to get automatic node ID from py2neo?
我将 py2neo 3.1.2 版本与 Neo4j 3.2.0 一起使用,对此我有疑问。在 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
我将 py2neo 3.1.2 版本与 Neo4j 3.2.0 一起使用,对此我有疑问。在 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