PyCharm中如何测试MongoDB连接?
com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting for a server that matches ReadPreferenceServerSelector{readPreference=primary}. Client view of cluster state is {type=UNKNOWN, servers=[{address=localhost:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketOpenException: Exception opening socket}, caused by {java.net.ConnectException: Connection refused: connect}}] 这个出错是什么鬼
PyCharm中如何测试MongoDB连接?
在PyCharm里测试MongoDB连接,最直接的办法就是用Python写个简单的测试脚本。PyCharm本身没有像对MySQL那样的内置数据库连接测试工具,所以得靠代码。
首先,确保你已经安装了pymongo驱动。如果没装,在PyCharm的终端(Terminal)里运行:
pip install pymongo
然后,新建一个Python文件,比如叫test_mongo.py,把下面的代码拷进去。记得把<your_connection_string>换成你真实的MongoDB连接字符串。对于本地默认的MongoDB服务,通常是"mongodb://localhost:27017"。
from pymongo import MongoClient
from pymongo.errors import ConnectionFailure
def test_mongodb_connection(connection_string):
"""
测试MongoDB连接
:param connection_string: MongoDB连接字符串
"""
client = None
try:
# 尝试创建连接
client = MongoClient(connection_string, serverSelectionTimeoutMS=5000) # 设置5秒超时
# 发送一个ping命令来触发网络请求,验证连接
client.admin.command('ping')
print("✅ 连接成功!MongoDB服务器可达。")
# 可选:列出所有数据库名称,确认有访问权限
db_list = client.list_database_names()
print(f" 可访问的数据库: {db_list[:5]}") # 只显示前5个,避免输出过长
return True
except ConnectionFailure as e:
print(f"❌ 连接失败!错误: {e}")
return False
except Exception as e:
print(f"⚠️ 发生其他错误: {e}")
return False
finally:
# 确保关闭连接
if client:
client.close()
print(" 连接已关闭。")
# 使用示例
if __name__ == "__main__":
# 替换成你的连接字符串
# 示例:本地MongoDB -> "mongodb://localhost:27017"
# 示例:带密码的Atlas集群 -> "mongodb+srv://username:password@cluster0.xxx.mongodb.net/"
YOUR_CONNECTION_STRING = "mongodb://localhost:27017"
test_mongodb_connection(YOUR_CONNECTION_STRING)
代码解释:
- 用
MongoClient创建连接对象,serverSelectionTimeoutMS设个超时时间,避免卡住。 client.admin.command('ping')是MongoDB推荐的检查连接方式,比简单创建client对象更可靠。- 用
try...except捕获ConnectionFailure(主要的连接错误)和其他异常。 list_database_names()可以验证权限,但这一步不是必须的,如果只是测通断可以去掉。- 最后在
finally块里确保连接被关闭。
在PyCharm里运行:
- 右键点击编辑器,选“Run ‘test_mongo’”。
- 看下面“Run”工具窗口的输出。如果看到“✅ 连接成功!”,那就没问题了。
连接字符串常见格式:
- 本地默认安装:
"mongodb://localhost:27017" - 带用户名密码:
"mongodb://myuser:mypassword@localhost:27017/mydatabase?authSource=admin" - MongoDB Atlas (云服务):
"mongodb+srv://username:password@cluster0.xxx.mongodb.net/"(在Atlas控制台能找到)
如果连不上,先检查这几点:
- MongoDB服务启动了没? 在终端跑
mongod命令或者检查服务状态。 - 端口对吗? 默认是
27017。 - 防火墙? 确保端口没被防火墙挡住。
- 连接字符串写对了吗? 特别是密码里的特殊字符要转义。
总结:写个脚本用pymongo的ping命令测最靠谱。
Mongodb 服务开启了?可以使用 studo3t 链接试试

