Neo4j Python 驅動庫完整教程(帶輸入輸出示例)
1. 基礎連接示例
輸入代碼
from neo4j import GraphDatabase# 連接配置
URI = "bolt://localhost:7687"
USER = "neo4j"
PASSWORD = "password123" # 替換為你的實際密碼def test_connection():driver = GraphDatabase.driver(URI, auth=(USER, PASSWORD))try:driver.verify_connectivity()server_info = driver.get_server_info()print("連接信息:")print(f"地址: {URI}")print(f"版本: {server_info.agent}")except Exception as e:print(f"連接失敗: {e}")finally:driver.close()test_connection()
示例輸出
連接信息:
地址: bolt://localhost:7687
版本: Neo4j/5.13.0
2. 基本CRUD操作
輸入代碼
class Neo4jCRUD:def __init__(self, uri, user, password):self.driver = GraphDatabase.driver(uri, auth=(user, password))def create_person(self, name, age):with self.driver.session() as session:result = session.execute_write(self._create_person, name, age)return result@staticmethoddef _create_person(tx, name, age):query = ("CREATE (p:Person {name: $name, age: $age}) ""RETURN p.name AS name, p.age AS age")result = tx.run(query, name=name, age=age)return result.single()# 使用示例
crud = Neo4jCRUD(URI, USER, PASSWORD)
print("創建節點:")
result = crud.create_person("Alice", 30)
print(result)
crud.close()
示例輸出
創建節點:
{'name': 'Alice', 'age': 30}
3. 查詢操作
輸入代碼
def find_person(name):driver = GraphDatabase.driver(URI, auth=(USER, PASSWORD))with driver.session() as session:result = session.execute_read(lambda tx: tx.run("MATCH (p:Person {name: $name}) RETURN p",name=name).single())return dict(result["p"]) if result else Noneprint("\n查詢結果:")
alice = find_person("Alice")
print(alice)
示例輸出
查詢結果:
{'name': 'Alice', 'age': 30}
4. 關系創建
輸入代碼
def create_movie_and_relationship():driver = GraphDatabase.driver(URI, auth=(USER, PASSWORD))with driver.session() as session:# 創建電影節點movie = session.execute_write(lambda tx: tx.run("CREATE (m:Movie {title: $title, year: $year}) RETURN m",title="The Matrix", year=1999).single())# 創建關系relationship = session.execute_write(lambda tx: tx.run("""MATCH (p:Person {name: $name}), (m:Movie {title: $title})CREATE (p)-[r:ACTED_IN {role: $role}]->(m)RETURN p.name, type(r), m.title""",name="Alice", title="The Matrix", role="Neo").single())return relationshipprint("\n創建關系結果:")
rel_result = create_movie_and_relationship()
print(rel_result)
示例輸出
創建關系結果:
{'p.name': 'Alice', 'type(r)': 'ACTED_IN', 'm.title': 'The Matrix'}
5. 復雜查詢
輸入代碼
def find_actors_in_movie(movie_title):driver = GraphDatabase.driver(URI, auth=(USER, PASSWORD))with driver.session() as session:result = session.execute_read(lambda tx: tx.run("""MATCH (p:Person)-[r:ACTED_IN]->(m:Movie)WHERE m.title = $titleRETURN p.name AS actor, r.role AS role""",title=movie_title).data())return resultprint("\n電影演員查詢:")
actors = find_actors_in_movie("The Matrix")
for actor in actors:print(f"{actor['actor']} 飾演 {actor['role']}")
示例輸出
電影演員查詢:
Alice 飾演 Neo
6. 批量導入示例
輸入代碼
def batch_import_people():people = [{"name": "Bob", "age": 25},{"name": "Charlie", "age": 35},{"name": "David", "age": 40}]driver = GraphDatabase.driver(URI, auth=(USER, PASSWORD))with driver.session() as session:result = session.execute_write(lambda tx: tx.run("UNWIND $people AS person ""CREATE (p:Person {name: person.name, age: person.age}) ""RETURN count(p) AS count",people=people).single())return result["count"]print("\n批量導入結果:")
count = batch_import_people()
print(f"成功導入 {count} 個人物節點")
示例輸出
批量導入結果:
成功導入 3 個人物節點
7. 圖形數據可視化示例
輸入代碼
def visualize_graph():driver = GraphDatabase.driver(URI, auth=(USER, PASSWORD))with driver.session() as session:# 查詢圖形結構result = session.execute_read(lambda tx: tx.run("""MATCH (p:Person)-[r]->(m)RETURN p, r, mLIMIT 10""").graph())# 打印圖形結構信息print("\n圖形結構信息:")print(f"節點數量: {len(result.nodes)}")print(f"關系數量: {len(result.relationships)}")# 打印前3個節點的詳細信息print("\n節點示例:")for i, node in enumerate(list(result.nodes)[:3], 1):print(f"節點 {i}: {dict(node)}")# 打印關系示例print("\n關系示例:")for rel in list(result.relationships)[:2]:print(f"{rel.start_node['name']} -[{rel.type}]-> {rel.end_node['title']}")visualize_graph()
示例輸出
圖形結構信息:
節點數量: 5
關系數量: 1節點示例:
節點 1: {'name': 'Alice', 'age': 30}
節點 2: {'title': 'The Matrix', 'year': 1999}
節點 3: {'name': 'Bob', 'age': 25}關系示例:
Alice -[ACTED_IN]-> The Matrix
這些示例展示了從基礎連接到復雜查詢的完整流程,每個示例都包含明確的輸入代碼和對應的預期輸出結果。