Neo4j 是一個高效能的、NOSQL 圖形資料庫,它將結構化資料儲存在網路上而不是表中。基於磁碟的、具備完全的事務特性的 Java 持久化引擎,這裡就不把他和常用關係型資料庫做對比了。因為篇幅有限,我這裡也是第一次使用,所以以下完全是保姆級的安裝教學了。
1. 開啟 Neo4j 官網,找到 「Developers」 選擇 「Download Center
2. 其中有企業版,社群版和桌面版提供下載,這裡我選擇 「Neo4j Desktop」,如果是部署可以選擇社群或企業。
3. 選擇 Windows 的 exe 進入,要求先填寫資訊後下載,彈出下載框後不要關閉網頁,待會需要裡面的啟用碼。
4. 由於 Neo4j 是磁碟儲存,開啟後先設定資料的儲存位置。
5. 然後回到下載後的官網,複製啟用碼,貼上到工具的 「Software key」 裡。
先看一下服務是否已經開啟,開啟預設的資料庫,可以看到連線地址,各種協定的埠。
開啟瀏覽器,輸入 127.0.0.1:7474,賬號密碼都輸入 neo4j 發現登陸失敗,報錯:Neo.ClientError.Security.Unauthorized: The client is unauthorized due to authentication failure
找到 neo4j 服務桌面端,找到預設的資料庫,找到 「Reset DBMS Password」,然後再重新輸入使用者 「neo4j」 和新密碼進行登陸。
登陸成功後就可以看到 neo4j 的預設資料庫 「Movide DBMS」 裡的資料節點和內容了。
在 Project 中 New 一個專案,然後新增一個 「Local DBMS」,再設定名稱和密碼,建立完畢後點選啟動。
根據建立後提供的地址和埠,在瀏覽器裡存取,輸入使用者名稱和設定的密碼後就會進入對應的圖了。
在 python 專案中新增 「py2neo」 包,然後再檢測試一下連線,節點建立和關係邊建立。
pip install py2neo -i https://pypi.tuna.tsinghua.edu.cn/simple
import os
import json
from py2neo import Graph,Node
class ThingGraph:
def __init__(self):
self.neo4j = Graph(
host="127.0.0.1", # neo4j 搭載伺服器的ip地址,ifconfig可獲取到
http_port=7474, # neo4j 伺服器監聽的埠號
user="neo4j", # 資料庫user name,如果沒有更改過,應該是neo4j
password="beiqiaosu123456")
def create_nodes(self):
class_name = ["手機", "筆電", "平板", "遊戲機", "桌上型電腦"]
brand = ["蘋果", "華為", "小米", "Vivo", "Oppo"]
goods = ["蘋果 iPhone 4S", "華為 nova 3e", "華為 T8620", "聯想ThinkPad W701"]
return self.create_node('Goods', goods)
if __name__ == "__main__":
things_graph = ThingGraph()
things_graph.create_nodes()
執行程式碼時如果出現 The following settings are not supported: {'http_port': 7474},是因為安裝的 py2neo 版本過高,可以下降其版本再執行。
pip install py2neo==4.3.0 -i https://pypi.douban.com/simple
降低 py2neo 版本後執行後發現依舊報錯,AttributeError: 'NoneType' object has no attribute 'pool',主要還是無法連線 Neo4j,排查後發現是之前的寫法不對,而且安裝最新版的 neo4j,同樣的 py2neo 也要較新的。
# 建立一個名為 'Person' 的節點
person = Node('Goods', name='T8620')
# 建立一個 Graph 物件,並指定資料庫連線資訊
graph = Graph('bolt://localhost:7687', auth=('neo4j', 'beiqiaosu123456'))
# 將節點新增到 Graph 中
graph.create(person)
我把 py2neo 包刪掉後,沒有指定版本安裝的是 py2neo 2021.2.3,執行程式碼後再在瀏覽器檢視,已經建立了節點 「Goods」,後面資料同步和關聯邊操作,要等完成了知識問答系統後再總結分享了。