Max*_*llN 22 ssl mongodb python-3.x pymongo-3.x mongodb-atlas
我正在使用 Python 3.9.5 和 PyMongo 3.11.4。我的MongoDB数据库的版本是4.4.6。我使用的是 Windows 8.1
我正在学习 MongoDB,并且在 Atlas 中设置了一个集群并连接到该集群。每当我尝试将文档插入集合中时,ServerSelectionTimeoutError都会引发 a ,并且在其括号内有几个[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate.
PyMongo 文档中的TLS 错误故障排除并没有太多帮助,因为它们只为 Linux 和 macOS 用户提供了提示。
值得一提的是,如果我tlsAllowInvalidCertificates=True在初始化时设置MongoClient,一切都会正常。这听起来不安全,虽然我正在开发一个小项目,但我仍然想养成良好的习惯,并且不要凌驾于任何现有的安全措施之上,所以我希望有一种替代方案。
从我所做的所有搜索来看,我猜测我丢失了某些证书,或者 Python 无法找到它们。我已经研究过这个certifi包,但是文档的这一部分看起来只有在我使用 Python 2.x 时才需要,但我不是。
所以是的,我现在有点陷入困境。
Max*_*llN 47
好吧,我最终决定安装certifi并且它成功了。
client = MongoClient(CONNECTION_STRING, tlsCAFile=certifi.where())
希望文档对此能更清楚一些,但也许我只是看起来不够努力。
小智 13
在 Flask 服务器中,我通过使用以下方法解决:
import certifi
app = Flask(__name__)
app.config['MONGO_URI'] =
'mongodb+srv://NAME:<PWD><DBNAME>.9xxxx.mongodb.net/<db>? retryWrites=true&w=majority'
mongo = PyMongo(app,tlsCAFile=certifi.where())
collection_name = mongo.db.collection_name
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15918 次 |
| 最近记录: |