如何基于docker安装neo4j并基于py2neo访问neo4j
neo4j是使用最广泛的中小型图数据库,提供了图形操作界面和cypher查询语言。这里尝试基于docker构建neo4j环境,并使用python进行图数据库的基本操作。示例代码参考和修改自网络资料。
neo4j是使用最广泛的中小型图数据库,提供了图形操作界面和cypher查询语言。
这里尝试基于docker构建neo4j环境,并使用python进行图数据库的基本操作。
示例代码参考和修改自网络资料。
1 neo4j安装
1.1 neo4j安装
为简化操作这里采用docker安装neo4j,并假设docker已经安装,安装过程参考如下链接。
https://blog.csdn.net/liliang199/article/details/150067330
neo4j docker安装指令如下。
docker pull docker pull neo4j:2025.09
启动docker neo4j容器
设置登录用户名(neo4j)和密码(12345678) --env NEO4J_AUTH=neo4j/123456
设置neo4j数据目录--volume=/data/dockerData/neo4j/data:/data
docker run -d --name neo4j --restart always --publish=7474:7474 --publish=7687:7687 --env NEO4J_AUTH=neo4j/12345678 --volume=/data/dockerData/neo4j/data:/data neo4j:2025.09 sleep 999999999999999
1.2 neo4j启动
由于一些原因,docker启动neo4j容器后,容器中neo4j可能没有启动,需登录容器手工处理。
登录docker容器
docker exec -it neo4j bash
修改登录密码
cd bin; neo4j-admin dbms set-initial-password "12345678"
启动neo4j
cd ..; ./bin/neo4j start
此时,neo4j成功启动,就可以使用浏览器登录和测试neo4j了。
http://127.0.0.1:7474/browser/
2 python连接
2.1 环境构建
这里使用conda构建python环境,并安装py2neo包,脚本如下所示。
conda create -n langchain python=3.10
conda activate langchain
conda install cmake
conda install ninja
pip install py2neo -i https://pypi.tuna.tsinghua.edu.cn/simpl
2.2 neo4j连接
以下是使用py2neo连接neo4j的代码示例。
参考上述安装过程,用户名和密码分别为neo4j和12345678。
from py2neo import Graph, Subgraph
from py2neo import Node, Relationship, Path
# 连接数据库
graph = Graph('bolt://localhost:7687', auth=('neo4j', '12345678'))
2.3 创建节点和关系
以下示例节点和关联创建过程。
from py2neo import Node, Relationship
# 创建节点
zs= Node("Person", name="张三")
ls = Node("Person", name="李四")
# 创建关系
knows = Relationship(zs, "knows", ls)
# 将节点和关系写入数据库
graph.create(zs | ls | knows)
2.4 cypher查询
以下示例cypher查询,以及对应的运行和查看方法。
run(query)执行任意query表示的Cypher 查询
data()将查询结果以字典形式返回
# 查询所有 Person 节点
results = graph.run("MATCH (p:Person) RETURN p.name").data()
for result in results:
print(result["p.name"])
2.5 match查询
match(label, **属性)匹配标签和属性
first()返回第一个匹配项
from py2neo import NodeMatcher
matcher = NodeMatcher(graph)
# 查找标签为 Person 且 name 为 Alice 的节点
zs = matcher.match("Person", name="张三").first()
print(zs)
2.6 更新节点属性
matcher = NodeMatcher(graph)
# 查找标签为 Person 且 name 为 Alice 的节点
zs = matcher.match("Person", name="张三").first()
zs["age"] = 30
graph.push(zs) # 将更改推送到数据库
2.7 删除节点和关系
matcher = NodeMatcher(graph)
# 查找标签为 Person 且 name 为 Alice 的节点
zs = matcher.match("Person", name="张三").first()
graph.delete(zs)
#graph.delete_all() 删除所有内容(慎用)
graph.delete_all()
2.8 创建图模型
from py2neo.ogm import GraphObject, Property
class Person(GraphObject):
__primarykey__ = "name"
name = Property()
age = Property()
3 整体测试
3.1 代码运行
整体运行代码如下所示
from py2neo import Graph, Node, Relationship, NodeMatcher
graph = Graph("bolt://localhost:7687", auth=("neo4j", "12345678"))
# 创建节点
zs= Node("Person", name="张三")
ls = Node("Person", name="李四")
# 创建关系
knows = Relationship(zs, "knows", ls)
#将节点和关系写入数据库
graph.create(zs | ls | knows)
matcher = NodeMatcher(graph)
# 查找标签为 Person 且 name 为 Alice 的节点
zs = matcher.match("Person", name="张三").first()
zs["age"] = 30
graph.push(zs) # 将更改推送到数据库
# 查找标签为 Person 且 name 为 Alice 的节点
zs = matcher.match("Person", name="张三").first()
print("=======执行完成=============")
运行输出如下,表示运行陈工
=======执行完成=============
3.2 图形展示
浏览器打开如下连接,登录neo4j,用户名neo4j,密码12345678
http://127.0.0.1:7474/browser/
如下图所示,输入cypher查询
match (p:Person) return p limit 100
图形化显示如下
reference
---
neo4j installation
https://neo4j.com/docs/operations-manual/current/installation/
neo4j docker
https://hub.docker.com/_/neo4j/tags
Getting started with Neo4j in Docker
https://neo4j.com/docs/operations-manual/current/docker/introduction/
Neo4j如何修改用户密码?
https://jishuzhan.net/article/1949642748621008897
Python中操作Neo4j图数据库
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)