繁体   English   中英

如何在py2neo中将参数传递给密码查询

[英]how to pass parameter to cypher query in py2neo

我有一个变量 name="Rahul",并且我想通过以下方式将此变量传递给 Py2neo 中的密码查询:

line=session.execute("MATCH (person)WHERE person.name=name RETURN person")

但我收到一个错误-

"py2neo.cypher.InvalidSyntax: name not defined (line 1, column 33)"

如何在py2neo中传递变量

如果name是参数,则需要将其括在花括号中。 您的查询应该类似于

MATCH (person) WHERE person.name = {name} RETURN person

您的 Python 代码可能如下所示

graph_db = neo4j.GraphDatabaseService()
qs = 'MATCH (person) WHERE person.name = {name} RETURN person'
query = neo4j.CypherQuery(graph_db, qs)
results = query.execute(name='Rahul')
print results

如果您想将查询包装在事务中,可以使用cypher模块创建会话,然后创建事务对象。 执行此操作的语法与stephenmuss的答案中提到的neo4j.CypherQuery中的语法略有不同。

from py2neo import neo4j, cypher
graph_db = neo4j.GraphDatabaseService('http://localhost:7474/db/data/')

# Create a Session
session = cypher.Session('http://localhost:7474')
# Create a transaction
tx = session.create_transaction()

# Write your query, and then include it in the transaction with a dictionary
# of parameters.
qs = 'MATCH (person) WHERE person.name = {name} RETURN person'
tx.append(qs, parameters={'name': 'Rahul'})
results = tx.commit()

获取节点的另一种方法是:

from py2neo import Graph, authenticate

server = "localhost:7474"

# set up authentication parameters
authenticate(server, <user>, <password>)

graph = Graph("{0}/db/data".format(server))
results = graph.find("person", "name", "Rahul")

为了清楚起见,将参数传递给 py2neo 查询的通用答案是这样的:

from py2neo import Graph

graph = Graph("URI", auth=("USER", "PASSWORD"))
graph.run("MATCH (p:Person) WHERE p.name=$name RETURN p", parameters={'name': 'Rahul'})

(注意 $ 符号)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM