MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment échapper @ dans un mot de passe en connexion pymongo?

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]")