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连接?

2 回复

在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)

代码解释:

  1. MongoClient创建连接对象,serverSelectionTimeoutMS设个超时时间,避免卡住。
  2. client.admin.command('ping')是MongoDB推荐的检查连接方式,比简单创建client对象更可靠。
  3. try...except捕获ConnectionFailure(主要的连接错误)和其他异常。
  4. list_database_names()可以验证权限,但这一步不是必须的,如果只是测通断可以去掉。
  5. 最后在finally块里确保连接被关闭。

在PyCharm里运行:

  1. 右键点击编辑器,选“Run ‘test_mongo’”。
  2. 看下面“Run”工具窗口的输出。如果看到“✅ 连接成功!”,那就没问题了。

连接字符串常见格式:

  • 本地默认安装"mongodb://localhost:27017"
  • 带用户名密码"mongodb://myuser:mypassword@localhost:27017/mydatabase?authSource=admin"
  • MongoDB Atlas (云服务)"mongodb+srv://username:password@cluster0.xxx.mongodb.net/"(在Atlas控制台能找到)

如果连不上,先检查这几点:

  1. MongoDB服务启动了没? 在终端跑mongod命令或者检查服务状态。
  2. 端口对吗? 默认是27017
  3. 防火墙? 确保端口没被防火墙挡住。
  4. 连接字符串写对了吗? 特别是密码里的特殊字符要转义。

总结:写个脚本用pymongoping命令测最靠谱。


Mongodb 服务开启了?可以使用 studo3t 链接试试

回到顶部