在MongoDB Atlas中使用PyMongo

Atlas 是MongoDB,Inc.托管的MongoDB作为服务产品。要连接到Atlas,请将Atlas提供的连接字符串传递到 MongoClient ::

client = pymongo.MongoClient(<Atlas connection string>)

连接到Atlas需要TLS/SSL。对于使用TLS/SSL的连接,PyMongo可能需要由Python版本决定的第三方依赖项。在PyMongo 3.3+中,可以使用以下pip命令安装PyMongo 3.3+和任何与TLS/SSL相关的依赖项:

$ python -m pip install pymongo[tls]

从pymongo3.11开始安装 PyOpenSSLrequestsservice_identity 对于Python版本早于2.7.9的用户。PyOpenSSL支持这些旧Python版本的SNI,允许应用程序连接到Altas免费和共享层实例。

早期版本的PyMongo要求您手动安装依赖项。有关TLS/SSL相关依赖项的列表,请参阅 TLS/SSL和PyMongo .

注解

连接到Atlas“Free-Tier”或“Shared Cluster”实例需要服务器名称指示(SNI)支持。SNI支持需要cpython2.7.9/pypy2.5.1或更高版本,或者pymongo3.11+和PyOpenSSL。要检查您的Python版本是否支持SNI,请运行以下命令:

$ python -c "import ssl; print(getattr(ssl, 'HAS_SNI', False))"

你应该看到“真的”。

警告

行业最佳实践建议使用TLS 1.1或更高版本,有些法规要求使用TLS 1.1或更高版本。虽然PyMongo不需要对应用程序进行任何更改就可以使用最新的协议,但是某些操作系统或版本可能无法提供足够新的OpenSSL版本来支持它们。

超过10.13(High Sierra)的macOS用户需要从 python.orghomebrewmacports 或其他类似来源。

Linux或其他非macOS Unix的用户可以检查他们的OpenSSL版本,如下所示:

$ openssl version

如果版本号小于1.0.1,则TLS 1.1或更高版本的支持不可用。请与您的操作系统供应商联系以获得解决方案或升级到更新的发行版。

您可以通过安装 requests 模块并执行以下命令:

python -c "import requests; print(requests.get('https://www.howsmyssl.com/a/check', verify=False).json()['tls_version'])"

您应该看到“TLS 1.X”,其中X大于等于1。

您可以在此处阅读有关TLS版本及其安全含义的更多信息:

https://www.owasp.org/index.php/Transport_Layer_Protection_Cheat_Sheet#Rule_-_Only_Support_Strong_Protocols