文档首页 → 开发应用程序 → Python 驱动程序 → PyMongo
选择连接目标
概述
在本指南中,您可以学习如何使用连接字符串和MongoClient
对象连接到不同类型的 MongoDB 部署。
Atlas
要连接到 Atlas 上的 MongoDB 部署,请在连接字符串中包含以下元素
您的 Atlas 集群的 URL
MongoDB 用户名
MongoDB 密码
然后,将连接字符串传递给 MongoClient
构造函数。
提示
按照Atlas 驱动连接指南 获取您的连接字符串。
当您连接到Atlas时,我们建议使用稳定API客户端选项,以避免Atlas升级到MongoDB服务器的新版本时发生破坏性更改。要了解有关稳定API功能的更多信息,请参阅稳定API页面。
以下代码示例展示了如何使用PyMongo连接到Atlas集群。代码还使用了server_api
选项来指定稳定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地址)和端口号。
如果您无法提供副本集中的完整主机列表,您可以指定一个或多个主机,并指示PyMongo进行自动发现以找到其他主机。要指示驱动程序执行自动发现,请执行以下操作之一
将副本集的名称指定为
replicaSet
参数的值。将
directConnection
参数的值指定为false
。指定副本集中的多个主机。
在以下示例中,驱动程序使用一个示例连接URI来连接到MongoDB副本集sampleRS
,该副本集在不同的三个主机上运行,包括host1
的端口27017。
from pymongo import MongoClient uri = "mongodb://host1:27017/?replicaSet=sampleRS" client = MongoClient(uri)
注意
MongoClient
构造函数是非阻塞的。当您连接到副本集时,构造函数会立即返回,而客户端使用后台线程连接到副本集。
如果您构造一个MongoClient
并立即打印其nodes
属性的字符串表示形式,当客户端连接到副本集成员时,列表可能为空。
初始化
要初始化一个副本集,您必须直接连接到一个成员。为此,将directConnection
连接选项设置为True
。您可以通过两种方式做到这一点:通过将参数传递给MongoClient
构造函数或在连接字符串中通过参数设置。
故障排除
服务器报告线版本X,PyMongo需要Y
如果您尝试连接到MongoDB Server v3.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部署升级到v3.6或更高版本,或者降级到支持MongoDB Server v2.6及更高版本的PyMongo v3.x。
自动重连
自动重连
异常表示发生了故障转移。这意味着PyMongo已经失去了与副本集原始主成员的连接,其最后操作可能已失败。
当出现此错误时,PyMongo将自动尝试找到后续操作的新主成员。为了处理此错误,您的应用程序必须采取以下行动之一
重试可能失败的操作
继续运行,了解操作可能已失败
重要
PyMongo在副本集选出新的主成员之前,对所有操作都会抛出自动重连
错误。
API文档
要了解如何在PyMongo中创建MongoClient
对象,请参阅以下API文档