在Cypher查询语言中,参数化查询是一种防止SQL注入攻击和提高查询性能的方法
from neo4j import GraphDatabase
class Neo4jConnection:
def __init__(self, uri, user, password):
self._driver = GraphDatabase.driver(uri, auth=(user, password))
def close(self):
if self._driver:
self._driver.close()
def execute_query(self, query, parameters=None):
with self._driver.session() as session:
result = session.run(query, parameters)
return result.data()
# 使用示例
uri = "bolt://localhost:7687"
user = "neo4j"
password = "your_password"
connection = Neo4jConnection(uri, user, password)
# 定义查询和参数
query = "MATCH (n:Person {name: $name}) RETURN n"
parameters = {"name": "Alice"}
# 执行查询
result = connection.execute_query(query, parameters)
print(result)
# 关闭连接
connection.close()
在这个示例中,我们定义了一个Neo4jConnection
类,用于连接到Neo4j数据库并执行查询。execute_query
方法接受一个查询字符串和一个可选的参数字典。我们使用$name
作为参数占位符,并在执行查询时传递一个包含实际值的字典。
请注意,这个示例使用的是Python的neo4j
驱动程序,但其他编程语言的Cypher驱动程序通常具有类似的功能。在使用其他驱动程序时,请查阅相应文档以了解如何定义参数化查询和执行查询。