[英]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.