Win10 64位+Python3环境下py2neo连接Neo4j遇ConnectionRefusedError
解决py2neo连接Neo4j时的ConnectionRefusedError错误
你在使用py2neo连接本地Neo4j数据库时遇到的连接拒绝问题,是新手常碰到的典型场景,我整理了几个最实用的排查和修复步骤:
1. 先确认Neo4j服务是否真的在运行
这是最容易被忽略的前提——如果Neo4j服务器压根没启动,自然会拒绝连接:
- 如果你用的是Neo4j桌面版:打开Neo4j Desktop,找到目标数据库实例,点击「Start」按钮,等状态显示「Running」后再尝试连接。
- 如果你用的是命令行安装版:执行启动命令:
neo4j start - 验证服务状态:访问
http://localhost:7474,如果能看到Neo4j的登录界面,说明服务已经正常运行。
2. 检查连接参数的正确性
你的代码里用了host='localhost', port=7687,这是Bolt协议的默认配置,但有两个细节要确认:
- Bolt协议是否开启:打开Neo4j的配置文件(桌面版在实例的「Settings」里查找,命令行版一般是
conf/neo4j.conf),确保dbms.connector.bolt.enabled=true,且dbms.connector.bolt.listen_address设置为:7687。 - 是否需要身份验证:Neo4j默认开启了身份验证,如果你没在代码里指定用户名和密码,也会导致连接失败。修改初始化代码,加上Neo4j的账号密码(默认用户名是
neo4j,密码是你第一次启动数据库时设置的):from py2neo import Graph, Node, Relationship # 添加auth参数 g = Graph(host='localhost', port=7687, auth=("neo4j", "你的数据库密码")) tx = g.begin() a = Node("Person", name="Alice") tx.create(a) b = Node("Person", name="Bob") ab = Relationship(a, "KNOWS", b) tx.create(ab) tx.commit() print(g.exists(ab))
3. 排查端口占用和防火墙拦截
- 测试端口连通性:在终端/PowerShell里执行命令,检查7687端口是否能正常访问:
- Windows(PowerShell):
Test-NetConnection localhost -Port 7687 - Linux/macOS:
nc -zv localhost 7687
如果显示连接失败,说明端口要么被其他程序占用,要么被防火墙拦截。
- Windows(PowerShell):
- 处理端口占用:找到占用7687端口的进程并关闭,或者修改Neo4j配置里的Bolt端口。
- 调整防火墙设置:确保本地防火墙允许7687端口的入站/出站连接。
4. 确认py2neo与Neo4j版本兼容
不同版本的py2neo和Neo4j可能存在兼容性问题,比如旧版py2neo可能不支持新版Neo4j的协议。你可以尝试升级py2neo到最新版本:
pip install --upgrade py2neo
如果以上步骤都试过还是不行,可以查看错误栈里的完整路径信息,看看有没有更具体的提示,但大部分情况下,以上几个点就能解决问题。
内容的提问来源于stack exchange,提问作者user3701979




