PyMongo:[SSL:CERTIFICATE_VERIFY_FAILED]

问题描述 投票:0回答:1

我是 MongoDB 新手,正在尝试使用 Python 连接到它。我从教程中获得了大部分代码(我填写了占位符):

from pymongo.mongo_client import MongoClient

# Replace the placeholder with your Atlas connection string
uri = "mongodb+srv://<USER NAME>:<USER PASS>@<URL I GOT FROM ATLAS>/?retryWrites=true&w=majority"

# Set the Stable API version when creating a new client
client = MongoClient(uri)

print('created mongo client')

try:
    # Send a ping to confirm a successful connection
    client.admin.command('ping')
except Exception as e:
    print(e)

但是,当我尝试运行它时,出现错误。以下是其中一些:

ac-teyl7re-shard-00-00.<ATLAS URL>:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:992),
ac-teyl7re-shard-00-02.<ATLAS URL>:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:992),
ac-teyl7re-shard-00-01.<ATLAS URL>:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:992), Timeout: 30s, Topology Description: <TopologyDescription id: 65063bb34951a43c73ce94df, topology_type: ReplicaSetNoPrimary, servers: [<ServerDescription ('ac-teyl7re-shard-00-00.<ATLAS URL>', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('ac-teyl7re-shard-00-00.<ATLAS URL>: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:992)')>, 
<ServerDescription ('ac-teyl7re-shard-00-01.<ATLAS URL>', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('ac-teyl7re-shard-00-01.<ATLAS URL>:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:992)')>, <ServerDescription ('ac-teyl7re-shard-00-02.<ATLAS URL>', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('ac-teyl7re-shard-00-02.<ATLAS URL>:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:992)')>]>

我在网上找不到任何特定于 PyMongo 的资源。

我正在跑步

Python 3.11
PyMongo 4.5.0

python-3.x mongodb pymongo
1个回答
0
投票

添加

import certifi
并从
MongoClient(uri)
更改为
 MongoClient(uri, tlsCAFile=certifi.where())

时有效
© www.soinside.com 2019 - 2024. All rights reserved.