py2no: graph.cypher.execute()
Py2Neo: graph.cypher.execute()
有没有办法让这个功能更nice/readerble? (例如,格式化字符串,这样我就没有 "create .." + label + "...")
from py2neo import Graph
graph = Graph()
def create_node(label, properties):
"""Create a note with the label-type and some properties"""
graph.cypher.execute("CREATE (p:" + label + " " + properties + ")")
create_node("Person", "{name: 'Alice', age: '22'}")
你有没有想过使用py2neo的内置方法?你会做
from py2neo import Node
alice = Node("Person", name="Alice", age=22)
如果你确实想使用 Cypher,它会有点不雅,因为你不能参数化标签。我还建议传递 Python 字典作为属性而不是字符串:
def create_node(label, properties):
query = "CREATE (:{}".format(label) + " {properties})"
params = dict(properties=properties)
graph.cypher.execute(query, params)
create_node("Person", {"name":"Alice","age":22})
之所以"CREATE (:{} {})".format(label, properties)
不起作用是因为字典的键会被引号括起来,这是无效的Cypher。例如:
>>> d = dict(name="Alice",age=22)
>>> label = "Person"
>>> "CREATE (:{} {})".format(label, properties)
"CREATE (:Person {'age': 22, 'name': 'Alice'})"
这将引发错误,因为有效的 Cypher 将是:
"CREATE (:Person {age: 22, name: 'Alice'})"
有没有办法让这个功能更nice/readerble? (例如,格式化字符串,这样我就没有 "create .." + label + "...")
from py2neo import Graph
graph = Graph()
def create_node(label, properties):
"""Create a note with the label-type and some properties"""
graph.cypher.execute("CREATE (p:" + label + " " + properties + ")")
create_node("Person", "{name: 'Alice', age: '22'}")
你有没有想过使用py2neo的内置方法?你会做
from py2neo import Node
alice = Node("Person", name="Alice", age=22)
如果你确实想使用 Cypher,它会有点不雅,因为你不能参数化标签。我还建议传递 Python 字典作为属性而不是字符串:
def create_node(label, properties):
query = "CREATE (:{}".format(label) + " {properties})"
params = dict(properties=properties)
graph.cypher.execute(query, params)
create_node("Person", {"name":"Alice","age":22})
之所以"CREATE (:{} {})".format(label, properties)
不起作用是因为字典的键会被引号括起来,这是无效的Cypher。例如:
>>> d = dict(name="Alice",age=22)
>>> label = "Person"
>>> "CREATE (:{} {})".format(label, properties)
"CREATE (:Person {'age': 22, 'name': 'Alice'})"
这将引发错误,因为有效的 Cypher 将是:
"CREATE (:Person {age: 22, name: 'Alice'})"