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("[email protected]") + "@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
admin
Baza danych. - Gospodarz
mongod
działa na 127.0.0.1 (localhost) - Port
mongod
przypisany 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("[email protected]")