我有一个巨大的烧瓶应用程序,我使用PyMongo
来自flask_pymongo
MongoDB 操作的类。我的问题是在开发环境中。
MONGO_URI
我有一个config.py
这样的:
MONGO_URI = "mongodb+srv://username:password@cluster-name.pihvl.gcp.mongodb.net/db_name?retryWrites=true&w=majority"
我的应用程序中的用法如下所示:
# This is how I have initialized it in '__init__.py'
from flask_pymongo import PyMongo
mongo = PyMongo(app)
# This is how I access collections in the specified DB
document = mongo.db[collection_name].find() # Throws the below error
这一直很好,直到几天前我从头开始重新安装 Windows 和 Python。现在相同的代码会引发以下错误:
pymongo.errors.ServerSelectionTimeoutError: cluster-name-shard-00-01.pihvl.gcp.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate
但是使用MongoClient
而不是PyMongo
工作就好了,像这样:
# Using MongoClient and setting 'ssl_cer_reqs'
from flask_pymongo import MongoClient
import ssl
mongo = MongoClient(app.config['MONGO_URI'], ssl_cert_reqs=ssl.CERT_NONE)
# This works just fine
document = mongo[db_name][collection_name].find()
问题
PyMongo
当我重新安装所有内容时发生了什么变化?我不想MongoClient
仅仅因为有 100 多个端点而使用它,现在转移是一场噩梦,而且我更喜欢PyMongo
因为我不必db_name
在每个查询中指定 ,它从MONGO_URI
.
我错过了什么,我该如何使用它PyMongo
?有没有办法设置ssl_cert_reqs
while using PyMongo
?