2

のドキュメントにMongoClientは、「host =」と言って、完全なMongoDBURIを指定できると書かれています。それらにはデータベース名が含まれます。それを行ったら、MongoClientオブジェクトからdb名を抽出する方法はありますか?ソースコードでそれを見つけることができません。

4

2 に答える 2

5

私はあなたが探しているものがで見つけることができると信じていますpymongo.uri_parser。特に、parse_uri関数を見てください。parse_uri引数としてMongoDBURIを取り、、、そして最も重要なことに、usernameなどの値を含むディクショナリを返します。passworddatabase

例:

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 : {}

お役に立てれば!

于 2013-02-19T03:58:01.437 に答える
2

この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で指定されていない場合はそれを補足できます。

于 2021-01-08T21:58:23.573 に答える