sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cómo escapar @ en una contraseña en la conexión pymongo?

Debería poder escapar de la contraseña usando urllib.quote() . Aunque solo debe citar/escapar la contraseña y excluir el username:;de lo contrario el : también se escapará en %3A .

Por ejemplo:

import pymongo 
import urllib 

mongo_uri = "mongodb://username:" + urllib.quote("[email protected]") + "@127.0.0.1:27001/"
client = pymongo.MongoClient(mongo_uri)

El fragmento anterior se probó para MongoDB v3.2.x, Python v2.7 y PyMongo v3.2.2.

El ejemplo anterior asumido en la cadena de conexión URI de MongoDB:

  • El usuario se crea en el admin base de datos.
  • El anfitrión mongod ejecutándose en 127.0.0.1 (localhost)
  • El puerto mongod asignado a es 27001

Para Python 3.x, puede utilizar urllib.parse.quote() para reemplazar caracteres especiales en su contraseña usando %xx escapar. Por ejemplo:

url.parse.quote("[email protected]")