Dovresti essere in grado di sfuggire alla password usando urllib.quote()
. Anche se dovresti solo citare / sfuggire alla password ed escludere il username:
;altrimenti il :
verrà eseguito anche l'escape in %3A
.
Ad esempio:
import pymongo
import urllib
mongo_uri = "mongodb://username:" + urllib.quote("[email protected]") + "@127.0.0.1:27001/"
client = pymongo.MongoClient(mongo_uri)
Lo snippet sopra è stato testato per MongoDB v3.2.x, Python v2.7 e PyMongo v3.2.2.
L'esempio sopra presupposto nella stringa di connessione URI MongoDB:
- L'utente viene creato in
admin
Banca dati. - L'host
mongod
in esecuzione è 127.0.0.1 (localhost) - Il porto
mongod
assegnato a è 27001
Per Python 3.x, puoi utilizzare urllib.parse.quote() per sostituire i caratteri speciali nella tua password usando il %xx
fuga. Ad esempio:
url.parse.quote("[email protected]")