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