私の質問はhow can i validate username password for mongodb authentication through pymongo?の仕様です。pymongo接続のパスワードで@をエスケープする方法は?
MongoDB Docsで説明されているように、私はPyMongo 3.2.2とユーザーとパスワードを含むURLを使用してMongoDBインスタンスに接続しようとしています。違いは、使用しているパスワードに「@」が含まれていることです。まず
私は単にこのように、エスケープせずに接続しようとしました:
prefix = 'mongodb://'
user = 'user:[email protected]_'
suffix = '@127.0.0.1:27001/'
conn = pymongo.MongoClient(prefix + user + suffix)
当然のことながら、私は次のエラーを得た:
InvalidURI: ':' or '@' characters in a username or password must be escaped according to RFC 2396.
だから私は、ユーザーを脱出しようとした:ようurllib.quote()を使用してパーツを渡しますこの:
prefix = 'mongodb://'
user = urllib.quote('user:[email protected]_')
suffix = '@127.0.0.1:27001/'
conn = pymongo.MongoClient(prefix + user + suffix)
しかし、私は:
OperationFailure: Authentication failed.
()それが重要ならば、GUI MongoDBの管理ツール(Robomongoを使用して、私は(実際の)アドレスと資格情報を使用してのMongoDBに接続することができるよと言って重要。)
印刷ユーザ変数上記のコードでは'user:passw_with_%40_'
文字列( '@'は '%40'になりました)を生成し、wikipediaによると予想されるエスケープです。
シングルとダブルのバックスラッシュ(@user = 'user:passw_with_\\@_'
とuser = 'user:passw_with_\@_'
)で@をエスケープしようとしましたが、それらはInvalidURI例外で失敗しました。
TL; DR;
私の質問は、MongoDB URLのパスワード部分で「@」をエスケープするにはどうすればいいですか?
であるために割り当てられたポート
mongod
ある: 'urllib.parse.quote' – luckydonald