uri_parser – Tools to parse and validate a MongoDB URI

Tools to parse and validate a MongoDB URI.

pymongo.uri_parser.parse_host(entity, default_port=27017)

Validates a host string

Returns a 2-tuple of host followed by port where port is default_port if it wasn’t specified in the string.

Parameters:
  • entity: A host or host:port string where host could be a
    hostname or IP address.
  • default_port: The port number to use when one wasn’t
    specified in entity.
pymongo.uri_parser.parse_ipv6_literal_host(entity, default_port)

Validates an IPv6 literal host:port string.

Returns a 2-tuple of IPv6 literal followed by port where port is default_port if it wasn’t specified in entity.

Parameters:
  • entity: A string that represents an IPv6 literal enclosed
    in braces (e.g. ‘[::1]’ or ‘[::1]:27017’).
  • default_port: The port number to use when one wasn’t
    specified in entity.
pymongo.uri_parser.parse_uri(uri, default_port=27017, validate=True, warn=False)

Parse and validate a MongoDB URI.

Returns a dict of the form:

{
    'nodelist': <list of (host, port) tuples>,
    'username': <username> or None,
    'password': <password> or None,
    'database': <database name> or None,
    'collection': <collection name> or None,
    'options': <dict of MongoDB URI options>
}

If the URI scheme is “mongodb+srv://” DNS SRV and TXT lookups will be done to build nodelist and options.

Parameters:
  • uri: The MongoDB URI to parse.
  • default_port: The port number to use when one wasn’t specified for a host in the URI.
  • validate: If True (the default), validate and normalize all options.
  • warn (optional): When validating, if True then will warn the user then ignore any invalid options or values. If False, validation will error when options are unsupported or values are invalid.

Changed in version 3.6: Added support for mongodb+srv:// URIs

Changed in version 3.5: Return the original value of the readPreference MongoDB URI option instead of the validated read preference mode.

Changed in version 3.1: warn added so invalid options can be ignored.

pymongo.uri_parser.parse_userinfo(userinfo)

Validates the format of user information in a MongoDB URI. Reserved characters like ‘:’, ‘/’, ‘+’ and ‘@’ must be escaped following RFC 3986.

Returns a 2-tuple containing the unescaped username followed by the unescaped password.

Paramaters:
  • userinfo: A string of the form <username>:<password>

Changed in version 2.2: Now uses urllib.unquote_plus so + characters must be escaped.

pymongo.uri_parser.split_hosts(hosts, default_port=27017)

Takes a string of the form host1[:port],host2[:port]… and splits it into (host, port) tuples. If [:port] isn’t present the default_port is used.

Returns a set of 2-tuples containing the host name (or IP) followed by port number.

Parameters:
  • hosts: A string of the form host1[:port],host2[:port],…
  • default_port: The port number to use when one wasn’t specified for a host.
pymongo.uri_parser.split_options(opts, validate=True, warn=False)

Takes the options portion of a MongoDB URI, validates each option and returns the options in a dictionary.

Parameters:
  • opt: A string representing MongoDB URI options.
  • validate: If True (the default), validate and normalize all options.
pymongo.uri_parser.validate_options(opts, warn=False)

Validates and normalizes options passed in a MongoDB URI.

Returns a new dictionary of validated and normalized options. If warn is False then errors will be thrown for invalid options, otherwise they will be ignored and a warning will be issued.

Parameters:
  • opts: A dict of MongoDB URI options.
  • warn (optional): If True then warnigns will be logged and invalid options will be ignored. Otherwise invalid options will cause errors.