Трябва да можете да избягвате паролата с помощта на urllib.quote() . Въпреки че трябва само да цитирате/избягате паролата и да изключите username:;в противен случай : също ще бъде екраниран в %3A .
Например:
import pymongo
import urllib
mongo_uri = "mongodb://username:" + urllib.quote("example@sqldat.com") + "@127.0.0.1:27001/"
client = pymongo.MongoClient(mongo_uri)
Горният фрагмент беше тестван за MongoDB v3.2.x, Python v2.7 и PyMongo v3.2.2.
Примерът по-горе е приет в низа за връзка на MongoDB URI:
- Потребителят е създаден в
adminбаза данни. - Хостът
mongodработи на 127.0.0.1 (localhost) - Пристанището
mongodприсвоен е 27001
За Python 3.x можете да използвате urllib.parse.quote(), за да замените специалните знаци във вашата парола, като използвате %xx бягство. Например:
url.parse.quote("example@sqldat.com")