【问题标题】:How to get automatic node ID from py2neo?如何从 py2neo 获取自动节点 ID?
【发布时间】: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 对象,但我找不到任何关于它的信息。

【问题讨论】:

    标签: python neo4j py2neo


    【解决方案1】:

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

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

    from py2neo import remote remote(node)._id

    【讨论】:

      【解决方案2】:

      更新:以前的答案不适用于新的 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。如果它工作正常,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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-10-30
        • 1970-01-01
        • 1970-01-01
        • 2021-12-21
        • 2014-10-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多