使用pymongo将数据插入mongoDB

乔丹·怀恩

我似乎无法将数据上传到托管在地图集上的mongo数据库中。我已复制了此处发布的确切步骤。https://www.w3schools.com/python/python_mongodb_insert.asp

import pymongo
import requests

url= "mongodb://jordan:*********@jordandb-shard-00-00-ykcna.mongodb.net:27017,jordandb-shard-00-01-ykcna.mongodb.net:27017,jordandb-shard-00-02-ykcna.mongodb.net:27017/test?ssl=true&replicaSet=JordanDB-shard-0&authSource=admin&retryWrites=true"

client = pymongo.MongoClient(url)
mydb = client.test
mycol = mydb["customers"]
mydict = {"name":"John", "adress":"Highway 37"}
x = mycol.insert_one(mydict)

print(client.list_database_names())

我收到超时错误。每一行都有效,直到我到达插入行(x = ....)。我正在使用pycharm和python 3.7。但是我也在jupyter上尝试过此操作,并收到了相同的错误:

pymongo.errors.ServerSelectionTimeoutError: jordandb-shard-00-00-ykcna.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1056),jordandb-shard-00-01-ykcna.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1056),jordandb-shard-00-02-ykcna.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1056)

这是我按照以下步骤获取网址的步骤 在此处输入图片说明 在此处输入图片说明

梅花

这有两个原因。
最明显的一个是您缺少证书链。

您可以通过发行获得连锁信息:

openssl s_client -showcerts -servername jordandb-shard-00-00-ykcna.mongodb.net -connect jordandb-shard-00-00-ykcna.mongodb.net:27017 </dev/null

它将告诉您它是来自DigiCert。因此,要么您在本地证书存储中丢失了该证书链(某些发行版可能需要您安装root ca trust)但是,如果您确实安装了rootca。现在该检查证书上的验证时间了。
如果添加,| openssl x509 -noout -dates您将获得此证书的有效日期:

openssl s_client -showcerts -servername jordandb-shard-00-00-ykcna.mongodb.net -connect jordandb-shard-00-00-ykcna.mongodb.net:27017 </dev/null  | openssl x509 -noout -dates

告诉您该证书来自DigiCert。
并且证书从7/02-19 00:00 GMT有效11/2-19 12:00 GMT希望在任何终端上
运行date都可以告诉您您处于这两个日期之间。

在任何其他情况下,我会说这是由于自签名证书造成的。
在这种情况下,您需要执行以下两项操作之一:

MongoClient(..., ssl_ca_certs='/path/to/ca.pem')
MongoClient(..., ssl_cert_reqs=ssl.CERT_NONE)

要提供您的自定义CA或告诉Mongo忽略证书验证(后者是最糟糕的选择。即使您说“以后我不会忘记对其进行修复”,嘿)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章