Vous devriez pouvoir échapper le mot de passe en utilisant urllib.quote()
. Bien que vous ne deviez que citer/échapper le mot de passe et exclure le username:
;sinon le :
sera également échappé dans %3A
.
Par exemple :
import pymongo
import urllib
mongo_uri = "mongodb://username:" + urllib.quote("[email protected]") + "@127.0.0.1:27001/"
client = pymongo.MongoClient(mongo_uri)
L'extrait ci-dessus a été testé pour MongoDB v3.2.x, Python v2.7 et PyMongo v3.2.2.
L'exemple ci-dessus supposé dans la chaîne de connexion MongoDB URI :
- L'utilisateur est créé dans l'
admin
base de données. - L'hébergeur
mongod
s'exécutant sur est 127.0.0.1 (localhost) - Le port
mongod
attribué à est 27001
Pour Python 3.x, vous pouvez utiliser urllib.parse.quote() pour remplacer les caractères spéciaux dans votre mot de passe en utilisant le %xx
échapper. Par exemple :
url.parse.quote("[email protected]")