MongoDB Pymongo 问题
Posted
技术标签:
【中文标题】MongoDB Pymongo 问题【英文标题】:MongoDB Pymongo issue 【发布时间】:2022-01-14 13:17:21 【问题描述】:我正在尝试制作一个 python 脚本来查找 mongodb 集合中的第一个条目,以进行尝试,但每次我尝试启动它时,都会收到此错误日志。感谢您的帮助!顺便说一句,别担心,代码中没有,这些只是占位符。
import pymongo
from pymongo import MongoClient
myclient =
pymongo.MongoClient("mongodb+srv://<MY USERNAME>:<MY PASSWORD>@cluster0.tzdil.mongodb.net/test")
mydb = myclient["db1"]
mycol = mydb["coll1"]
x = mycol.find_one()
print(x)
错误日志:
Traceback(最近一次调用最后一次): 文件“c:\Users\pafk\Documents\code\MongoDB\readDB.py”,第 7 行,在 x = mycol.find_one() 文件“C:\Users\pafk\AppData\Local\Programs\Python\Python39\lib\site-packages\pymongo\collection.py”,第 1114 行,在 find_one 对于 cursor.limit(-1) 中的结果: 文件“C:\Users\pafk\AppData\Local\Programs\Python\Python39\lib\site-packages\pymongo\cursor.py”,第 1159 行,在下一个 如果 len(self.__data) 或 self._refresh(): 文件“C:\Users\pafk\AppData\Local\Programs\Python\Python39\lib\site-packages\pymongo\cursor.py”,第 1057 行,在 _refresh self.__session = self.__collection.database.client._ensure_session() _ensure_session 中的文件“C:\Users\pafk\AppData\Local\Programs\Python\Python39\lib\site-packages\pymongo\mongo_client.py”,第 1603 行 return self.__start_session(True, causal_consistency=False) 文件“C:\Users\pafk\AppData\Local\Programs\Python\Python39\lib\site-packages\pymongo\mongo_client.py”,第 1553 行,在 __start_session server_session = self._get_server_session() _get_server_session 中的文件“C:\Users\pafk\AppData\Local\Programs\Python\Python39\lib\site-packages\pymongo\mongo_client.py”,第 1589 行 返回 self._topology.get_server_session() 文件“C:\Users\pafk\AppData\Local\Programs\Python\Python39\lib\site-packages\pymongo\topology.py”,第 530 行,在 get_server_session session_timeout = self._check_session_support() _check_session_support 中的文件“C:\Users\pafk\AppData\Local\Programs\Python\Python39\lib\site-packages\pymongo\topology.py”,第 514 行 self._select_servers_loop( _select_servers_loop 中的文件“C:\Users\pafk\AppData\Local\Programs\Python\Python39\lib\site-packages\pymongo\topology.py”,第 216 行 引发 ServerSelectionTimeoutError( pymongo.errors.ServerSelectionTimeoutError: cluster0-shard-00-02.tzdil.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:证书已过期 (_ssl.c:1129),cluster0-shard-00-01。 tzdil.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:证书已过期 (_ssl.c:1129),cluster0-shard-00-00.tzdil.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:证书已过期 (_ssl.c:1129),超时:30 秒,拓扑描述:
, , ]> PS C:\Users\pafk\Documents\code\MongoDB>
【问题讨论】:
【参考方案1】:你试过了吗? https://www.mongodb.com/community/forums/t/keep-getting-serverselectiontimeouterror/126190
如果您在连接到 Atlas 时突然遇到 TLS 证书验证问题,这可能是由于 Let's Encrypt 使用的旧根证书将于 2021 年 9 月 30 日到期。MongoDB Atlas 使用 Let's Encrypt 签署 Atlas 集群 TLS 证书。
此验证问题出在连接的客户端,而不是服务器。您的 Atlas 集群证书仍然有效,但您的本地信任存储不包含验证所需的新根证书。
通用根证书通常包含在操作系统更新中,但在某些情况下,您可能需要手动更新操作系统或应用程序环境使用的信任库。
更多信息,请参阅:哪个证书颁发机构签署 MongoDB Atlas 集群 TLS 证书?。
【讨论】:
正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。以上是关于MongoDB Pymongo 问题的主要内容,如果未能解决你的问题,请参考以下文章