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("example@sqldat.com") + "@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'
adminbase de données. - L'hébergeur
mongods'exécutant sur est 127.0.0.1 (localhost) - Le port
mongodattribué à 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("example@sqldat.com")