图数据库 Neo4j 入门

1 简介

Neo4j 是一个「图数据库」为核心,以自然的连接状态存储和管理数据的工具。它是我们做知识图谱的数据库首选,Neo4j 自带的可视化功能非常方便我们查看数据。

2 安装

这里使用 docker 进行容器化运行,过程非常简单。

1
2
3
4
5
6
7
docker pull neo4j:5.14.0-community-bullseye

docker run -d --name neo4j --restart=always \
-p 7474:7474 -p 7687:7687 -v $HOME/data/neo4j:/data \
neo4j:5.14.0-community-bullseye

# 在浏览器中打开 http://localhost:7474/

3 写入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
from neo4j import GraphDatabase, RoutingControl


URI = "neo4j://localhost:7687"
AUTH = ("neo4j", "password")


def add_friend(driver, name, friend_name):
driver.execute_query(
"MERGE (a:Person {name: $name}) "
"MERGE (friend:Person {name: $friend_name}) "
"MERGE (a)-[:KNOWS]->(friend)",
name=name, friend_name=friend_name, database_="neo4j",
)


def print_friends(driver, name):
records, _, _ = driver.execute_query(
"MATCH (a:Person)-[:KNOWS]->(friend) WHERE a.name = $name "
"RETURN friend.name ORDER BY friend.name",
name=name, database_="neo4j", routing_=RoutingControl.READ,
)
for record in records:
print(record["friend.name"])


with GraphDatabase.driver(URI, auth=AUTH) as driver:
add_friend(driver, "Arthur", "Guinevere")
add_friend(driver, "Arthur", "Lancelot")
add_friend(driver, "Arthur", "Merlin")
print_friends(driver, "Arthur")

4 查看

1
2
3
4
5
6
7
8
# 不带参数查询
MATCH (n) RETURN n LIMIT 25

# 带参数查询
MATCH (n:Person {name: Arthur}) RETURN n LIMIT 25

# 删除所有数据
MATCH (n) DETACH DELETE n

5 参考

作者

Ailln

发布于

2021-01-01

更新于

2024-03-02

许可协议

评论