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("example@sqldat.com") + "@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
adminBanca dati. - L'host
mongodin esecuzione è 127.0.0.1 (localhost) - Il porto
mongodassegnato 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("example@sqldat.com")