のドキュメントにMongoClient
は、「host =」と言って、完全なMongoDBURIを指定できると書かれています。それらにはデータベース名が含まれます。それを行ったら、MongoClientオブジェクトからdb名を抽出する方法はありますか?ソースコードでそれを見つけることができません。
2 に答える
私はあなたが探しているものがで見つけることができると信じていますpymongo.uri_parser
。特に、parse_uri関数を見てください。parse_uri
引数としてMongoDBURIを取り、、、そして最も重要なことに、username
などの値を含むディクショナリを返します。password
database
例:
from pymongo.uri_parser import parse_uri
mongo_uri = 'mongodb://james:brewer@localhost/test'
for k, v in parse_uri(mongo_uri).items():
print k, ':', v
印刷します
username : james
nodelist : [('localhost', 27017)]
database : test
connection : None
password : brewer
options : {}
お役に立てれば!
このMongoClient
クラスには、次のように文書化されたと呼ばれるメソッドがあります。get_default_database(default=None, [...other options...])
MongoDB接続URIで指定されたデータベースを取得します。
MongoClient
また、と呼ばれるメソッド.get_database(name=None, [... other options...])
があり、name=None
パラメーターは次のように定義されます。
name(オプション):データベースの名前-文字列。None(デフォルト)の場合、MongoDB接続URIで指定されたデータベースが返されます。
したがって、URIだけがあり、そのURIにデータベース名が含まれている場合は、次のようにMongoDBデータベースを取得できます。
mongo_database = pymongo.MongoClient(host=mongo_uri).get_default_database()
またはこのように:
mongo_database = pymongo.MongoClient(host=mongo_uri).get_database()
上記default=
の最初のメソッドのname=
パラメーターと2番目のメソッドのパラメーターは同じ機能を実行します。つまり、アプリケーションプログラマーは、URIで指定されたデータベースをオーバーライドするか、URIで指定されていない場合はそれを補足できます。