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

使用Python3+PyMongo连接MongoDB遇WinError10061连接拒绝错误求助

解决PyMongo连接MongoDB时的ServerSelectionTimeoutError问题

这个错误pymongo.errors.ServerSelectionTimeoutError: localhost:27017: [WinError 10061] No connection could be made because the target machine actively refused it本质是你的Python程序无法连接到本地MongoDB服务,大概率是服务未启动、端口配置不对或者被防火墙拦截了,下面是一步步的排查和解决方法:

1. 优先检查MongoDB服务是否在运行

这是最常见的原因,针对不同系统操作如下:

  • Windows系统:按下Win + R输入services.msc回车打开服务管理器,找到MongoDB相关服务(通常名为MongoDB Server),如果状态是“已停止”,右键点击选择「启动」;还可以把启动类型改成「自动」,避免下次开机还要手动启动。
  • macOS/Linux系统
    • 用Homebrew安装的MongoDB:执行brew services list查看状态,未运行则用brew services start mongodb-community启动。
    • systemd系列系统(如Ubuntu):执行systemctl status mongod查看状态,未运行则用sudo systemctl start mongod启动。

2. 确认MongoDB监听端口是否为27017

MongoDB默认用27017端口,若配置被修改过,需要对应调整连接代码:

  • 打开MongoDB配置文件(Windows在安装目录的mongod.cfg,Linux在/etc/mongod.conf),找到net.port项确认端口号。
  • 若端口不是27017,连接时要手动指定:Client = MongoClient('mongodb://localhost:你的自定义端口')

3. 检查防火墙是否拦截了端口

本地防火墙或杀毒软件可能会阻止27017端口的连接:

  • 暂时关闭防火墙测试,如果能正常连接,就把MongoDB程序或27017端口加入防火墙允许列表。
  • 也可以用命令检查端口是否被其他软件占用:Windows用netstat -ano | findstr :27017,Linux/macOS用lsof -i :27017

4. 验证MongoDB服务本身是否可用

用MongoDB自带的命令行工具测试:

  • 打开终端/命令提示符,输入mongosh(新版本)或mongo(旧版本),如果能成功进入MongoDB shell,说明服务本身正常,此时可以检查代码细节。

顺便提下你代码里的两个小细节

虽然不是连接错误的原因,但可能影响后续操作:

  • 数据库名拼写错误:Libraby应该是Library
  • PyMongo的insert()方法已被废弃,推荐使用insert_one()(插入单条数据):
collection.insert_one(book)

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

火山引擎 最新活动