我是 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
添加
import certifi
并从 MongoClient(uri)
更改为 MongoClient(uri, tlsCAFile=certifi.where())
时有效