使用pymong将数据插入mongoDB

2024-05-29 10:16:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我似乎无法将数据上传到atlas上托管的mongodb中。我把贴在这里的确切步骤抄了下来。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和python3.7。不过,我也在jupyter上尝试过这个方法,并收到了相同的错误:

^{pr2}$

下面是我获取url的步骤 enter image description hereenter image description here


Tags: testimportclienttrueurlnetmongodb步骤
2条回答

可以使用pymongo默认函数

connObj = MongoClient(MONGO_HOST, MONGO_PORT)
connObj[MONGO_DB].authenticate(MONGO_UNAME, MONGO_PASSWD)

这有几个原因。
最明显的一个可能是缺少证书链。在

您可以通过以下方式获取链信息:

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

它会告诉你它是来自DigiCert的。因此,要么您的本地证书存储中缺少该证书链(某些发行版可能需要您安装根ca信任)。但是如果你安装了根ca。是时候检查证书上的验证时间了。
如果添加| openssl x509 -noout -dates,您将获得此证书的有效日期:

^{pr2}$

这说明证书来自DigiCert。
证书有效期从7/02-19 00:00 GMT到{}。
在任何终端上运行date应该能告诉你你正处在这两个日期之间。在

在任何其他情况下,我认为这是由于自签名证书。
在这种情况下,您需要做两件事之一:

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

要么提供您的自定义CA,要么告诉Mongo忽略证书验证(后者是最糟糕的选择)。即使你说“我以后不会忘了修好它”,嘿)。在

相关问题 更多 >

    热门问题