magnetic GaMr
magnetic GaMr

Reputation: 31

pymongo: Resolver configuration could not be read or specified no nameservers

It's my first time using MongoDB but I can't seem to fix this one issue, my friend who uses MongoDB doesn't know how to use python so he can't really help me.

Here's my code:

import pymongo

# Replace the uri string with your MongoDB deployment's connection string.
conn_str = "mongodb+srv://sqdnoises:{mypass}@sqd.d4kjb.mongodb.net/myFirstDatabase?retryWrites=true&w=majority"

# set a 5-second connection timeout
client = pymongo.MongoClient(conn_str, serverSelectionTimeoutMS=5000)

try:
    print(client.server_info())
    print('\n\n\n aka connected')
except Exception:
    print("Unable to connect to the server.")

Where {mypass} is my MongoDB password.

I keep getting this error:

Traceback (most recent call last):
  File "/data/data/com.termux/files/usr/lib/python3.9/site-packages/dns/resolver.py", line 782, in read_resolv_conf
    f = stack.enter_context(open(f))
FileNotFoundError: [Errno 2] No such file or directory: '/etc/resolv.conf'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/data/data/com.termux/files/usr/lib/python3.9/site-packages/pymongo/srv_resolver.py", line 88, in _resolve_uri
    results = _resolve('_' + self.__srv + '._tcp.' + self.__fqdn,
  File "/data/data/com.termux/files/usr/lib/python3.9/site-packages/pymongo/srv_resolver.py", line 41, in _resolve
    return resolver.resolve(*args, **kwargs)
  File "/data/data/com.termux/files/usr/lib/python3.9/site-packages/dns/resolver.py", line 1305, in resolve
    return get_default_resolver().resolve(qname, rdtype, rdclass, tcp, source,
  File "/data/data/com.termux/files/usr/lib/python3.9/site-packages/dns/resolver.py", line 1278, in get_default_resolver
    reset_default_resolver()
  File "/data/data/com.termux/files/usr/lib/python3.9/site-packages/dns/resolver.py", line 1290, in reset_default_resolver
    default_resolver = Resolver()
  File "/data/data/com.termux/files/usr/lib/python3.9/site-packages/dns/resolver.py", line 734, in __init__
    self.read_resolv_conf(filename)
  File "/data/data/com.termux/files/usr/lib/python3.9/site-packages/dns/resolver.py", line 785, in read_resolv_conf
    raise NoResolverConfiguration
dns.resolver.NoResolverConfiguration: Resolver configuration could not be read or specified no nameservers.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/storage/emulated/0/! workspace/mongolearn/main.py", line 7, in <module>
    client = pymongo.MongoClient(conn_str, serverSelectionTimeoutMS=5000)
  File "/data/data/com.termux/files/usr/lib/python3.9/site-packages/pymongo/mongo_client.py", line 677, in __init__
    res = uri_parser.parse_uri(
  File "/data/data/com.termux/files/usr/lib/python3.9/site-packages/pymongo/uri_parser.py", line 532, in parse_uri
    nodes = dns_resolver.get_hosts()
  File "/data/data/com.termux/files/usr/lib/python3.9/site-packages/pymongo/srv_resolver.py", line 119, in get_hosts
    _, nodes = self._get_srv_response_and_hosts(True)
  File "/data/data/com.termux/files/usr/lib/python3.9/site-packages/pymongo/srv_resolver.py", line 99, in _get_srv_response_and_hosts
    results = self._resolve_uri(encapsulate_errors)
  File "/data/data/com.termux/files/usr/lib/python3.9/site-packages/pymongo/srv_resolver.py", line 95, in _resolve_uri
    raise ConfigurationError(str(exc))
pymongo.errors.ConfigurationError: Resolver configuration could not be read or specified no nameservers.

How do I fix this?

I am following https://docs.mongodb.com/drivers/pymongo/

Upvotes: 2

Views: 2517

Answers (1)

keyiflerolsun
keyiflerolsun

Reputation: 409

indeed, the problem is that dnspython tries to open /etc/resolv.conf

import dns.resolver
dns.resolver.default_resolver=dns.resolver.Resolver(configure=False)
dns.resolver.default_resolver.nameservers=['8.8.8.8']

Just adde this code to the top of your main code, and that should be sufficient to get you past this hurdle..

Upvotes: 6

Related Questions