我尝试使用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笔记本。
3条答案
按热度按时间vxqlmq5t1#
在MongoClient()URI中,只需指定mongodb而不是mongodb+srv:然后将占位符字段即password和dbname替换为群集密码和databasename。或者,如果上面的命令不起作用,请尝试安装python -m pip install pymongo[srv]此命令,然后重新启动您正在使用的IDE。希望这对您有所帮助
velaa5lx2#
我今天没有安装dnspython的时候遇到了这个错误,所以我在requirements.txt中添加了dnspython==2.3.0,这样就解决了这个问题。在requirements.txt中找到其他模块的版本,如下所示:
另一件需要注意的事情是,访问计算机知道DB用户名和密码是不够的。您必须在Atlas中进行设置,以允许访问您试图访问Atlas的计算机的IP。为此,登录Atlas,单击您的集群(集群名称)-〉网络访问-〉添加IP地址。
xqk2d5yq3#
我也遇到了同样的问题,我在项目中的一个文件名为
dns.py
,所以Python会使用我的文件而不是dns库,因此出现了这个错误,重命名它就解决了这个问题。希望这个有用。