pymongo.errors.ConfigurationError:必须安装“dnspython”模块才能使用mongodb+srv://URI

4c8rllxm  于 2023-02-17  发布在  Python
关注(0)|答案(3)|浏览(389)

我尝试使用SRV方案连接到MongoDB集群,但在尝试连接时遇到了问题。

from motor import motor_asyncio
motor_client = motor_asyncio.AsyncIOMotorClient('mongodb+srv://<user>:<password>@examplecluster-ece7n.azure.mongodb.net/test?retryWrites=true&w=majority')
_db = self.motor_client.translations
_collection = _db.translations_collections

我已经安装了dnspython模块,但这是仍然弹出的错误:

Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/libneko/extras/superuser.py", line 176, in execute_in_session
    result = await locals()["aexec"](ctx, ctx.bot)
  File "<string>", line 4, in aexec
  File "/usr/local/lib/python3.7/site-packages/motor/core.py", line 141, in __init__
    delegate = self.__delegate_class__(*args, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/pymongo/mongo_client.py", line 524, in __init__
    res = uri_parser.parse_uri(entity, port, warn=True)
  File "/usr/local/lib/python3.7/site-packages/pymongo/uri_parser.py", line 318, in parse_uri
    raise ConfigurationError('The "dnspython" module must be '
pymongo.errors.ConfigurationError: The "dnspython" module must be installed to use mongodb+srv:// URIs

它应该按照我的预期成功连接到群集,另外,只需指定两点
1.我安装了dnspython后,错误弹出。
1.看起来问题和这个pymongo - mongodb+srv "dnspython must be installed" error差不多,但是我用的不是Jupyter笔记本。

vxqlmq5t

vxqlmq5t1#

在MongoClient()URI中,只需指定mongodb而不是mongodb+srv:然后将占位符字段即password和dbname替换为群集密码和databasename。或者,如果上面的命令不起作用,请尝试安装python -m pip install pymongo[srv]此命令,然后重新启动您正在使用的IDE。希望这对您有所帮助

velaa5lx

velaa5lx2#

我今天没有安装dnspython的时候遇到了这个错误,所以我在requirements.txt中添加了dnspython==2.3.0,这样就解决了这个问题。在requirements.txt中找到其他模块的版本,如下所示:

Flask==2.2.0
pymongo==3.11.3
Werkzeug>=2.2.0
Gunicorn
dnspython==2.3.0

另一件需要注意的事情是,访问计算机知道DB用户名和密码是不够的。您必须在Atlas中进行设置,以允许访问您试图访问Atlas的计算机的IP。为此,登录Atlas,单击您的集群(集群名称)-〉网络访问-〉添加IP地址。

xqk2d5yq

xqk2d5yq3#

我也遇到了同样的问题,我在项目中的一个文件名为dns.py,所以Python会使用我的文件而不是dns库,因此出现了这个错误,重命名它就解决了这个问题。
希望这个有用。

相关问题