Pymongo 无法连接到数据库:pymongo.errors.ServerSelectionTimeoutError: connection closed

Posted

技术标签:

【中文标题】Pymongo 无法连接到数据库:pymongo.errors.ServerSelectionTimeoutError: connection closed【英文标题】:Pymongo not able to connect to the database: pymongo.errors.ServerSelectionTimeoutError: connection closed 【发布时间】:2019-03-08 04:11:18 【问题描述】:

我想通过 pymongo 读取集合,但出现以下错误:

Traceback(最近一次调用最后一次):文件 “C:/Users/GSingh/Py​​charmProjects/MC/quizQuestionAnswers.py”,第 21 行, 在 pprint.pprint(posts.find_one()) 文件 "C:\Users\GSingh\AppData\Local\Continuum\anaconda2\lib\site-packages\pymongo\collection.py", 第 1262 行,在 find_one 中 对于 cursor.limit(-1) 的结果:文件“C:\Users\GSingh\AppData\Local\Continuum\anaconda2\lib\site-packages\pymongo\cursor.py”, 第 1189 行,在下一个 如果 len(self.__data) 或 self._refresh(): 文件 "C:\Users\GSingh\AppData\Local\Continuum\anaconda2\lib\site-packages\pymongo\cursor.py", 第 1087 行,在 _refresh 中 self.__session = self.__collection.database.client._ensure_session() 文件 "C:\Users\GSingh\AppData\Local\Continuum\anaconda2\lib\site-packages\pymongo\mongo_client.py", 第 1558 行,在 _ensure_session 中 return self.__start_session(True, causal_consistency=False) 文件 "C:\Users\GSingh\AppData\Local\Continuum\anaconda2\lib\site-packages\pymongo\mongo_client.py", 第 1511 行,在 __start_session server_session = self._get_server_session() 文件“C:\Users\GSingh\AppData\Local\Continuum\anaconda2\lib\site-packages\pymongo\mongo_client.py”, 第 1544 行,在 _get_server_session 中 返回 self._topology.get_server_session() 文件“C:\Users\GSingh\AppData\Local\Continuum\anaconda2\lib\site-packages\pymongo\topology.py”, 第 427 行,在 get_server_session 中 无)文件“C:\Users\GSingh\AppData\Local\Continuum\anaconda2\lib\site-packages\pymongo\topology.py”, 第 199 行,在 _select_servers_loop self._error_message(selector)) pymongo.errors.ServerSelectionTimeoutError: 连接关闭

以下是我正在运行的代码:

from pymongo import MongoClient
import pprint

username = 'username'
password = 'Password'

uri = "mongodb://"+username+":"+password+"@mc-*****.mongodb.net:27017/?authMechanism=SCRAM-SHA-256"
client = MongoClient(uri)
database = client["sws-quiz"]
collection = database["attempts"]

try:
    posts = database.posts
    pprint.pprint(posts.find_one())

finally:
    client.close()

【问题讨论】:

【参考方案1】:

那是因为我没有做 ssl=True

【讨论】:

以上是关于Pymongo 无法连接到数据库:pymongo.errors.ServerSelectionTimeoutError: connection closed的主要内容,如果未能解决你的问题,请参考以下文章

python如何通过pymongo连接到mongodb?

使用 PyMongo 和 x509 SSL 证书连接到 MongoDB 数据库时出现 ServerSelectionTimeoutError

使用 TLS 将 pymongo 客户端连接到 mongodb 服务器

通过 httpd 上的 Flask-PyMongo 连接到 MongoHQ URI 时出现 ConnectionFailure

将pymongo光标转换为json

PyMongo:类_cmessage中现有属性的AttributeErrors