Powinieneś być w stanie uciec przed hasłem za pomocą urllib.quote() . Chociaż powinieneś tylko zacytować/pominąć hasło i wykluczyć username:;w przeciwnym razie : zostanie także zmieniony na %3A .
Na przykład:
import pymongo
import urllib
mongo_uri = "mongodb://username:" + urllib.quote("example@sqldat.com") + "@127.0.0.1:27001/"
client = pymongo.MongoClient(mongo_uri)
Powyższy fragment został przetestowany dla MongoDB v3.2.x, Python v2.7 i PyMongo v3.2.2.
Powyższy przykład założono w ciągu połączenia MongoDB URI:
- Użytkownik jest tworzony w
adminBaza danych. - Gospodarz
mongoddziała na 127.0.0.1 (localhost) - Port
mongodprzypisany do to 27001
W Pythonie 3.x możesz użyć urllib.parse.quote() do zastąpienia znaków specjalnych w haśle za pomocą %xx ucieczka. Na przykład:
url.parse.quote("example@sqldat.com")