在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驅動程序通常具有類似的功能。在使用其他驅動程序時,請查閱相應文檔以了解如何定義參數化查詢和執行查詢。