【问题标题】:Can we create a node in Neo4j having properties as dictionary using Python package py2neo?我们可以使用 Python 包 py2neo 在 Neo4j 中创建一个具有字典属性的节点吗?
【发布时间】:2016-02-09 17:28:53
【问题描述】:

我想使用 py2neo 在字典中创建一个具有属性的节点。

query = CREATE (movie:Movie {'a': 'b', 'c': 'd'}) RETURN movie

graph_db.cypher.execute(query)

然后它给出了一个错误。

所以我需要将节点的属性更改为{a: 'b', c: 'd'}

有没有办法使用 py2neo 做到这一点? 或者其他方式?

谢谢

【问题讨论】:

    标签: neo4j cypher py2neo


    【解决方案1】:

    您可以使用查询参数来创建节点,如下所述:http://neo4j.com/docs/stable/cypher-parameters.html

    parameter_dict = {'params': {'a': 'b', 'c': 'd'}}
    
    query = "CREATE (movie:Movie {params}) RETURN movie"
    
    graph.cypher.execute(query, parameters=parameter_dict)
    

    【讨论】:

    • 我今天尝试运行此查询,但 graph.cypher 未被识别为有效属性。这是 py2neo 从 v2 到 v3 的变化吗?我尝试在文档中对此进行研究,但没有成功,
    • 这晚了,但以下是 v4 的做法:graph.run(query) -- 也强烈建议使用 python fstrings。
    • 你有什么想法吗,如何在 golang 中做到这一点?
    【解决方案2】:

    以下是 py2neo v3 代码,用于使用字典创建具有“a”和“b”属性的电影节点

        import py2neo
    
        from py2neo import Graph, Node
    
        def authenticateAndConnect():
            # Authenticate
            py2neo.authenticate('localhost:7474', '<yourUserName>', '<yourPassword>')
    
            # Connect (your folder names may be different)
            return Graph('http://localhost:7474/default.graphdb/data/')
    
        def foo():
            graph = authenticateAndConnect()
    
            # Define a list of labels
            labels = [ 'Movie' ]
    
            # Define a dictionary
            properties = {'a': 'b', 'c':'d'}
    
            node = Node(*labels, **properties)
            graph.create(node)
    
    
        if __name__ == '__main__':
            foo()
    

    【讨论】:

      【解决方案3】:

      这将在 py2neo 包中工作(当前版本 2021.0.1)

      from py2neo import Graph
      graph_db = Graph()
      
      query = "CREATE (movie:Movie $props) RETURN movie"
      graph_db.run(query, props={'a': 'b', 'c': 'd'})
      

      以及官方neo4j

      from neo4j import GraphDatabase
      driver = GraphDatabase.driver()
      graph_db = driver.session()
      
      query = "CREATE (movie:Movie $props) RETURN movie"
      graph_db.run(query, props={'a': 'b', 'c': 'd'})
      

      【讨论】:

        最近更新 更多