Neo4j Python 驅動庫完整教程(帶輸入輸出示例)

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

這些示例展示了從基礎連接到復雜查詢的完整流程,每個示例都包含明確的輸入代碼和對應的預期輸出結果。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/89026.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/89026.shtml
英文地址,請注明出處:http://en.pswp.cn/web/89026.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Axios 和 Promise 區別對比

Axios 和 Promise 是前端開發中兩個不同的概念,盡管 Axios 基于 Promise 實現,但它們的核心定位和功能有顯著區別。以下是對比分析: 1. 核心定位與功能Promise 定義:Promise 是 JavaScript 的異步編程方案,用于處理異步…

Git分支管理與工作流詳解

前言 分支管理是Git最強大的功能之一,它允許開發者在不影響主代碼庫的情況下創建獨立的工作空間。本文將詳細介紹Git分支的操作和常見工作流策略,幫助團隊更高效地協作開發。 1. Git分支的基本概念 1.1 什么是分支 在Git中,分支本質上是指…

【flutter】flutter網易云信令 + im + 聲網rtm從0實現通話視頻文字聊天的踩坑

接了一個國外的項目,項目采用網易云im 網易云信令聲網rtm遇到的一些問題這個項目只對接口,給的工期是兩周,延了工期,問題還是比較多的 需要全局監聽rtm信息,收到監聽內容,引起視頻通話網易云給的文檔太爛,所有的類型推策只能文檔一點點推聲網的rtm配置網易云的信令,坑太多,比如…

hive/spark sql中unix_timestamp 函數的坑以及時間戳相關的轉換

我用的是hive版本是3.1.3,spark版本是3.3.1,它們的unix_timestamp 函數在同樣的語句下轉換出來的時間戳是完全不同的,如下試驗所示1.unix_timestamp 函數的坑上圖試驗中我同樣的計算 2025-07-11 10:00:00 時間點對應的時間戳,但是…

MyBatis專欄介紹

專欄導讀 在當今的軟件開發領域,持久層框架的選擇對于提高開發效率和數據處理能力至關重要。MyBatis作為一個半自動化的ORM框架,因其靈活、高效的特點,在眾多開發者中廣受好評。本專欄《MyBatis實戰》旨在通過深入淺出的方式,幫助…

HarmonyOS從入門到精通:自定義組件開發指南(七):自定義事件與回調

HarmonyOS從入門到精通:自定義組件開發指南(七):自定義事件與回調 在HarmonyOS應用開發中,組件化架構是構建復雜界面的基礎,而組件間的高效通信則是實現業務邏輯的核心。自定義事件與回調機制作為組件交互的…

C++編程學習(第七天)

基于過程的程序設計C既可以用來進行基于過程的程序設計,又可以用來進行面向對象的程序設計。基于過程的程序設計又稱為過程化的程序設計,它的特點是:程序必須告訴計算機應當具體怎么做,也就是要給出計算機全部操作的具體過程&…

ubuntu透網方案

場景:兩個linux/Ubuntu系統,一個可以上網,一個不能,讓不能上網的,讓能上網的共享網絡 步驟 1:修改 /etc/sysctl.conf sudo nano /etc/sysctl.conf 找到或添加以下行: net.ipv4.ip_forward1 按 CtrlO 保存&a…

基于Python的物聯網崗位爬取與可視化系統的設計與實現【海量數據、全網崗位可換】

文章目錄有需要本項目的代碼或文檔以及全部資源,或者部署調試可以私信博主項目介紹數據采集數據預處理系統展示總結每文一語有需要本項目的代碼或文檔以及全部資源,或者部署調試可以私信博主 項目介紹 隨著物聯網技術的迅速發展,物聯網行業…

線性回歸原理推導與應用(十):邏輯回歸多分類實戰

本篇文章將利用sklearn中內置的鳶尾花數據進行邏輯回歸建模并對鳶尾花進行分類。對于邏輯回歸和線性回歸的相關原理,可以查看之前的文章 數據導入 鳶尾花數據是機器學習里的常用數據,首先導入一些基礎庫并從sklearn中導入數據集 #導入用到的一些pytho…

Docker 部署emberstack/sftp 鏡像

Docker 部署 emberstack/sftp 鏡像 1、找到國內可用的docker源,本次測試使用docker.1ms.run 2、下載emberstack/sftp鏡像docker pull docker.1ms.run/emberstack/sftp3、安裝并啟動emberstack/sftp鏡像docker run -d -p 22:22 --name SFTP -v D:\SFTP:/home/sftpuser/sftp --pr…

【華為OD】MVP爭奪戰2(C++、Java、Python)

文章目錄題目題目描述輸入描述輸出描述示例思路核心思路:關鍵觀察:算法步驟:排序策略:特殊情況處理:代碼CJavaPython復雜度分析時間復雜度空間復雜度結果總結題目 題目描述 給定一個整型數組,請從該數組中…

Python打卡訓練營Day58

DAY 58 經典時序預測模型2知識點回顧:時序建模的流程時序任務經典單變量數據集ARIMA(p,d,q)模型實戰SARIMA摘要圖的理解處理不平穩的2種差分n階差分---處理趨勢季節性差分---處理季節性建立一個ARIMA模型,通…

003大模型基礎知識

大模型分類: 技術架構: Encoder Only Bert Decoder Only 著名的大模型都是 Encoder - Decoder T5 是否開源: 開源陣營: Llama DeepSeek Qwen 閉源陣營: ChatGpt Gemini Claude 語言模型發展階段&am…

JVM監控及診斷工具-GUI篇

19.1. 工具概述 使用上一章命令行工具或組合能幫您獲取目標Java應用性能相關的基礎信息,但它們存在下列局限: 1.無法獲取方法級別的分析數據,如方法間的調用關系、各方法的調用次數和調用時間等(這對定位應用性能瓶頸…

適用于Windows系統截圖工具

1.Faststone Capture 官網網址:https://faststone-capture.com/ 網上很多注冊碼:https://www.cnblogs.com/LiuYanYGZ/p/16839503.html 2.Snipaste 官網網址:https://apps.microsoft.com/detail/9p1wxpkb68kx?launchtrue&modefull&…

區塊鏈的三種共識機制——PoW、PoS和DPoS原理

區塊鏈的核心是去中心化網絡的信任機制,而共識機制是實現這一目標的關鍵。共識機制可分為兩個階段:(1)提出共識內容(2)對內容達成共識(遵循最長鏈原則)。三種主流的共識機制主要有工…

React 和 Vue的自定義Hooks是如何實現的,如何創建自定義鉤子

目的:將公共邏輯提取出來,類似于 mixin,解決了mixin的設計缺陷。 React 和 Vue 自定義 Hooks 實現對比 React 自定義 Hooks React 的自定義 Hooks 是 JavaScript 函數,它們以 use 開頭,可以調用其他 Hooks。 基本規則 …

構建高效事件驅動架構:AWS S3與SQS集成實踐指南

引言 在現代云架構中,事件驅動的設計模式越來越受到開發者的青睞。AWS S3與SQS的集成為我們提供了一個強大的事件處理機制,能夠在文件上傳、刪除或修改時自動觸發后續的業務邏輯。本文將詳細介紹如何配置S3事件通知到SQS隊列,并分享實際項目中的最佳實踐。 架構概述 S3事…

C++ -- STL-- List

////// 歡迎來到 aramae 的博客,愿 Bug 遠離,好運常伴! ////// 博主的Gitee地址:阿拉美 (aramae) - Gitee.com 時代不會辜負長期主義者,愿每一個努力的人都能達到理想的彼岸。1. list的介紹及使用 2. list的深度剖…