You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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
      如果显示连接失败,说明端口要么被其他程序占用,要么被防火墙拦截。
  • 处理端口占用:找到占用7687端口的进程并关闭,或者修改Neo4j配置里的Bolt端口。
  • 调整防火墙设置:确保本地防火墙允许7687端口的入站/出站连接。

4. 确认py2neo与Neo4j版本兼容

不同版本的py2neo和Neo4j可能存在兼容性问题,比如旧版py2neo可能不支持新版Neo4j的协议。你可以尝试升级py2neo到最新版本:

pip install --upgrade py2neo

如果以上步骤都试过还是不行,可以查看错误栈里的完整路径信息,看看有没有更具体的提示,但大部分情况下,以上几个点就能解决问题。

内容的提问来源于stack exchange,提问作者user3701979

火山引擎 最新活动