偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

使用Python操作Neo4j

開發(fā)
本文通過使用python,帶你看如何操作neo4j。

一、基礎環(huán)境準備

1.1 創(chuàng)建 Conda 虛擬環(huán)境

  • 打開終端/命令行,輸入:
conda create -n neo4j_env python=3.9 -y

-n neo4j_env:環(huán)境名稱(可自定義,如 my_neo4j_env)。

python=3.11.0:指定 Python 版本(本次采用3.11.0)。

-y:自動確認安裝依賴。

  • 激活環(huán)境
conda activate neo4j_env  # Windows/macOS/Linux 通用命令

1.2 安裝 Py2neo 庫

安裝最新py2neo版本的命令:

# 或安裝最新版(適合 Neo4j 5.x)
pip install py2neo

圖片

1.3 驗證安裝

在 Python 交互環(huán)境中測試:

from py2neo import __version__
print("Py2neo 版本:", __version__)  # 應顯示安裝版本號
# 連接 Neo4j 測試(確保本地 Neo4j 服務已啟動)
from py2neo import Graph
graph = Graph("bolt://localhost:7687", auth=("neo4j", "你的密碼"))
print(graph.run("RETURN '連接成功'").data())

圖片

可以看到,已經成功連接neo4j數據庫。

二、neo4j的基礎語法

2.1  創(chuàng)建節(jié)點與關系

2.1.1 創(chuàng)建節(jié)點

創(chuàng)建一個Person的節(jié)點,名字是Alice。相當于Alice被劃分為Person這個類別。

對于Person節(jié)點,有name和age兩個屬性。

from py2neo import Graph, Node


# 連接 Docker 內的 Neo4j
graph = Graph("bolt://localhost:7687", auth=("neo4j", "neo4j1234"))


# 創(chuàng)建節(jié)點
node = Node("Person", name="Alice", age=30)
graph.create(node)

在neo4j內,每一個點稱作一個實體(節(jié)點),Alice就是一個實體,擁有age和name兩個屬性。

圖片

2.1.2 創(chuàng)建關系

在此之前,我們先清空neo4j內的所有數據,使用以下CQL語句:

MATCH (n)
DETACH DELETE n

圖片

清除之后,數據庫內再無任何實體。

然后,我們開始創(chuàng)建Alice與Bob的關系,設定他們是朋友關系,指向關系為:alice->bob;since表示朋友關系的開始時間。

創(chuàng)建代碼如下:

from py2neo import Graph, Node, NodeMatcher,Relationship


# 連接 Docker 內的 Neo4j
graph = Graph("bolt://localhost:7687", auth=("neo4j", "neo4j1234"))


# 創(chuàng)建節(jié)點間關系
alice = Node("Person", name="Alice")
bob = Node("Person", name="Bob")
relation = Relationship(alice, "FRIEND", bob, since=2025)
graph.create(relation)  # 提交關系

圖片

2.1.3 注意事項

重復執(zhí)行創(chuàng)建關系,并不會覆蓋,而是會新建節(jié)點與關系。

我們再次執(zhí)行2.1.2的代碼,可以看到Alice和Bob再次形成新的實體,且id是不一樣的。

圖片

2.2  merge的使用

2.2.1 注意事項graph.create()的缺點

在通過graph.create()進行節(jié)點、關系創(chuàng)建時,多次執(zhí)行后,我們會重復創(chuàng)建相同的節(jié)點與關系。

實際上,多數情況下,這并不是我們想要的結果,我們想要的是即使多次執(zhí)行,仍然只創(chuàng)建一組實體。

對于此,我們可以采用merge函數來解決這個問題。

2.2.2 merge的效果

  • 存在則匹配:若指定模式已存在,則直接匹配并返回結果。
  • 不存在則創(chuàng)建:若模式不存在,則創(chuàng)建該模式的所有元素(節(jié)點、關系及屬性)。

在py2neo中,merge 會檢查實體的 is_bound 狀態(tài)(是否已綁定到數據庫)。若實體未綁定(即未預先提交),則會自動創(chuàng)建并綁定實體,再創(chuàng)建關系。

簡單來說,若實體存在,就不再次創(chuàng)建實體,直接創(chuàng)建關系;如果不存在,就先創(chuàng)建實體再創(chuàng)建關系。

2.2.3 merge的python代碼

from py2neo import Graph, Node, NodeMatcher,Relationship


# 連接 Docker 內的 Neo4j
graph = Graph("bolt://localhost:7687", auth=("neo4j", "neo4j1234"))


# 創(chuàng)建節(jié)點間關系
alice = Node("Person", name="Alice")
bob = Node("Person", name="Bob")
relation = Relationship(alice, "FRIEND", bob, since=2026)
graph.merge(alice,"Person","name")  # 提交節(jié)點
graph.merge(bob,"Person","name")  # 提交節(jié)點
graph.merge(relation,"Person","name")  # 提交關系

即使我們多次執(zhí)行此代碼,也僅形成一個實體關系對。

圖片

2.3  實體的查詢

2.3.1 查詢節(jié)點

通過NodeMatcher去匹配節(jié)點。

from py2neo import Graph, Node, NodeMatcher,Relationship,RelationshipMatcher


# 連接 Docker 內的 Neo4j
graph = Graph("bolt://localhost:7687", auth=("neo4j", "neo4j1234"))


# 使用NodeMatcher
matcher = NodeMatcher(graph)
# 匹配name=Alice的節(jié)點
result = matcher.match("Person").where("_.name = 'Alice'").all()


print(result)

圖片

2.3.2 查詢關系

通過RelationshipMatcher去匹配關系。

from py2neo import Graph, Node, NodeMatcher,Relationship,RelationshipMatcher


# 連接 Docker 內的 Neo4j
graph = Graph("bolt://localhost:7687", auth=("neo4j", "neo4j1234"))


# 使用RelationshipMatcher
rel_matcher = RelationshipMatcher(graph)
relations = rel_matcher.match(r_type="FRIEND").all()


print(relations)

圖片

2.4  刪除實體與關系

2.4.1 刪除實體

通過graph.delete()刪除指定實體,當實體被刪除后,其關系將自動被刪除。

本質:匹配到指定節(jié)點,然后用delete刪除。

from py2neo import Graph, Node, NodeMatcher,Relationship


# 連接 Docker 內的 Neo4j
graph = Graph("bolt://localhost:7687", auth=("neo4j", "neo4j1234"))


# 按條件刪除節(jié)點
matcher = NodeMatcher(graph)
# 匹配第一個Alice的Person節(jié)點
node = matcher.match("Person", name="Alice").first()
if node:
	graph.delete(node)  # 自動刪除關聯(lián)關系

在刪除Alice實體后,Alice實體的關系也被刪除,僅保留Bob實體。

圖片

2.4.2 刪除關系

通過graph.delete()刪除指定關系,實體會被保留。

本質:匹配到指定關系,然后用delete刪除。

from py2neo import Graph, Node, NodeMatcher,Relationship,RelationshipMatcher


# 連接 Docker 內的 Neo4j
graph = Graph("bolt://localhost:7687", auth=("neo4j", "neo4j1234"))




# 刪除特定關系
rel_matcher = RelationshipMatcher(graph)
# 匹配FRIEND的關系
relation = rel_matcher.match(r_type="FRIEND").first()
if relation:
    graph.separate(relation)  # 僅刪除關系,保留節(jié)點

可以看到,實體間關系被刪除,但是實體得以保留。

圖片

2.4.3 刪除所有數據

graph.delete_all()可以刪除數據庫內所有數據,一定要慎用。

責任編輯:龐桂玉 來源: Python伊甸園
相關推薦

2021-12-27 07:31:37

JavaNeo4J數據庫

2022-11-18 17:53:03

Neo4j

2017-07-28 15:12:28

Neo4j圖數據庫

2022-04-13 11:32:45

Neo4j圖數據庫

2024-08-08 08:31:32

SpringNeo4j優(yōu)化

2018-05-16 08:26:39

知識圖譜Neo4j

2021-12-03 20:33:08

計算

2025-10-09 00:00:00

Neo4jLLMs結構化

2011-07-26 12:48:52

neo4j圖數據庫

2015-09-28 08:57:06

Ruby APPNeo4j

2017-04-24 20:30:47

數據庫工具導入數據

2025-07-21 09:23:13

2024-06-03 10:53:18

LLMRAGGraphRAG

2011-09-22 16:46:02

Neo4j圖形數據庫數據庫

2022-01-17 14:34:59

數據平臺數據數字化

2022-01-17 17:10:18

Neo4j 圖數據庫

2022-02-15 08:22:28

Neo4jSpring數據庫

2018-05-03 15:40:33

2021-10-27 17:20:23

圖數據數據庫

2022-03-23 09:37:54

Neo4j開源侵犯
點贊
收藏

51CTO技術棧公眾號