【发布时间】: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 做到这一点? 或者其他方式?
谢谢
【问题讨论】:
我想使用 py2neo 在字典中创建一个具有属性的节点。
query = CREATE (movie:Movie {'a': 'b', 'c': 'd'}) RETURN movie
graph_db.cypher.execute(query)
然后它给出了一个错误。
所以我需要将节点的属性更改为{a: 'b', c: 'd'}。
有没有办法使用 py2neo 做到这一点? 或者其他方式?
谢谢
【问题讨论】:
您可以使用查询参数来创建节点,如下所述: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.run(query) -- 也强烈建议使用 python fstrings。
以下是 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()
【讨论】:
这将在 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'})
【讨论】: