Você deve conseguir escapar da senha usando
urllib.quote()
. Embora você deva apenas citar/escapar a senha e excluir o username:
;caso contrário, o :
também será escapado para %3A
. Por exemplo:
import pymongo
import urllib
mongo_uri = "mongodb://username:" + urllib.quote("[email protected]") + "@127.0.0.1:27001/"
client = pymongo.MongoClient(mongo_uri)
O trecho acima foi testado para MongoDB v3.2.x, Python v2.7 e PyMongo v3.2.2.
O exemplo acima assumido na string de conexão do URI do MongoDB:
- O usuário é criado no
admin
base de dados. - O host
mongod
em execução é 127.0.0.1 (localhost) - A porta
mongod
atribuído é 27001
Para Python 3.x, você pode utilizar urllib.parse.quote() para substituir caracteres especiais em sua senha usando o
%xx
escapar. Por exemplo:url.parse.quote("[email protected]")