U zou het wachtwoord moeten kunnen escapen met urllib.quote() . Hoewel je alleen het wachtwoord moet quoten/escapen, en de username:;anders de : wordt ook geëscaped naar %3A .
Bijvoorbeeld:
import pymongo
import urllib
mongo_uri = "mongodb://username:" + urllib.quote("example@sqldat.com") + "@127.0.0.1:27001/"
client = pymongo.MongoClient(mongo_uri)
Het bovenstaande fragment is getest voor MongoDB v3.2.x, Python v2.7 en PyMongo v3.2.2.
Het bovenstaande voorbeeld aangenomen in de MongoDB URI-verbindingsreeks:
- De gebruiker wordt aangemaakt in de
admindatabank. - De gastheer
mongoddraait op 127.0.0.1 (localhost) - De poort
mongodtoegewezen aan is 27001
Voor Python 3.x kunt u urllib.parse.quote() gebruiken om speciale tekens in uw wachtwoord te vervangen met behulp van de %xx ontsnappen. Bijvoorbeeld:
url.parse.quote("example@sqldat.com")