Du bör kunna undkomma lösenordet med urllib.quote()
. Även om du bara bör citera/escape lösenordet och utesluta username:
;annars är :
kommer också att escapes till %3A
.
Till exempel:
import pymongo
import urllib
mongo_uri = "mongodb://username:" + urllib.quote("[email protected]") + "@127.0.0.1:27001/"
client = pymongo.MongoClient(mongo_uri)
Ovanstående kodavsnitt testades för MongoDB v3.2.x, Python v2.7 och PyMongo v3.2.2.
Exemplet ovan antaget i MongoDB URI-anslutningssträngen:
- Användaren skapas i
admin
databas. - Värden
mongod
körs på är 127.0.0.1 (localhost) - Porten
mongod
tilldelad till är 27001
För Python 3.x kan du använda urllib.parse.quote() för att ersätta specialtecken i ditt lösenord med %xx
fly. Till exempel:
url.parse.quote("[email protected]")