Docs 菜单
Docs 主页
/ / /
pymongo
/

选择连接目标

在此页面上

  • Overview
  • Atlas
  • 本地部署
  • 副本集
  • 初始化
  • 故障排除
  • MongoDB Server报告 Wire 版本 X, PyMongo需要 Y
  • 自动重新连接
  • API 文档

在本指南中,您可以了解如何使用连接string和 MongoClient 对象连接到不同类型的MongoDB部署。

要连接到MongoDB 上的Atlas 部署,请在连接string 中包含以下元素:

  • Atlas 集群的 URL

  • MongoDB 用户名

  • MongoDB 密码

然后,将连接string传递给 MongoClient 构造函数。

提示

按照 Atlas驱动程序连接指南检索连接string 。

当您连接到Atlas时,我们建议使用 Stable API客户端选项,以避免Atlas升级到新版本的MongoDB Server时发生重大更改。 要学习;了解有关 Stable API功能的更多信息,请参阅 Stable API页面。

以下代码展示了如何使用 PyMongo 连接到 Atlas 集群。 该代码还使用 server_api 选项指定stable API版本。

from pymongo import MongoClient
from pymongo.server_api import ServerApi
# Replace the placeholder with your Atlas connection string
uri = "<connection string>"
# Create a MongoClient with a MongoClientOptions object to set the Stable API version
client = MongoClient(uri, server_api=ServerApi(
version='1', strict=True, deprecation_errors=True))
try:
# Connect the client to the server (optional starting in v4.7)
client.connect()
# Send a ping to confirm a successful connection
client.admin.command({'ping': 1})
print("Pinged your deployment. You successfully connected to MongoDB!")
finally:
# Ensures that the client will close when you finish/error
client.close()

要连接到本地 MongoDB 部署,请使用localhost作为主机名。 默认情况下, mongod进程在端口27017上运行,但您可以根据部署进行自定义。

以下代码展示了如何使用 PyMongo 连接到本地 MongoDB 部署:

from pymongo import MongoClient
uri = "mongodb://localhost:27017/"
client = MongoClient(uri)

要连接到副本集,请在连接IP 中指定副本集成员的主机名(或string 地址)和端口号。

如果无法提供副本集中主机的完整列表,则可以指定副本集中的一个或多个主机,并指示 PyMongo 执行自动发现以查找其他主机。 要指示驱动程序执行自动发现,请执行以下操作之一:

  • 将副本集的名称指定为 replicaSet 参数的值。

  • false 指定为 directConnection 参数的值。

  • 在副本集中指定多个主机。

在以下示例中,驱动程序使用样本连接 URI 连接到 MongoDB 副本集 sampleRS,该副本集在三个不同主机(包括 host1)的端口 27017 上运行:

from pymongo import MongoClient
uri = "mongodb://host1:27017/?replicaSet=sampleRS"
client = MongoClient(uri)

注意

MongoClient构造函数是非阻塞的。 连接到副本集时,构造函数会立即返回,而客户端会使用后台线程连接到副本集。

如果构造 MongoClient 并立即打印其 nodes 属性的string表示形式,则当客户端连接到副本集成员时,列表可能为空。

要初始化副本集,您必须直接连接到单个成员。 为此,请将directConnection连接选项设置为True 。 您可以通过两种方式执行此操作:将参数传递给 MongoClient 构造函数,或通过连接string中的参数。

from pymongo import MongoClient
client = MongoClient("mongodb://<hostname>:<port>",
directConnection=True)
from pymongo import MongoClient
uri = ("mongodb://<hostname>:<port>/?"
"directConnection=true")
client = MongoClient(uri)

如果您尝试连接到 MongoDB Server v 3.4或更早版本,PyMongo 可能会引发以下错误:

pymongo.errors.ConfigurationError: Server at localhost:27017 reports wire version 5, but this version of PyMongo requires at least 6 (MongoDB 3.6).

当驱动程序版本对于其所连接的服务器来说太新时,就会出现这种情况。 要解决此问题,请将 MongoDB 部署升级到 v 3.6或更高版本,或降级到 PyMongo v 3 .x,它支持 MongoDB Server v 2.6及更高版本。

AutoReconnect异常表示发生了故障转移。 这意味着 PyMongo 已失去与副本集的原始主节点成员的连接,并且其最后一个操作可能已失败。

发生此错误时,PyMongo 会自动尝试为后续操作查找新的主节点成员。 要处理该错误,您的应用程序必须执行以下操作之一:

  • 重试可能失败的操作

  • 继续运行,但需了解操作可能失败

重要

PyMongo 会对所有操作引发AutoReconnect错误,直到副本集选出新的主节点成员。

要了解有关在 PyMongo 中创建MongoClient对象的更多信息,请参阅以下 API 文档:

后退

创建 MongoClient