Python Pymongo MongoClient:如果您通过URI将数据库放入,如何将其取出?

Python Pymongo MongoClient:如果您通过URI将数据库放入,如何将其取出?,python,mongodb,Python,Mongodb,MongoClient的文档中说,可以说“host=”并给出完整的mongodburi。其中包括一个数据库名称。一旦我这样做了,是否有某种方法可以从MongoClient对象中提取db名称?我无法在源代码中找到它。我相信您要查找的内容可以在pymongo.uri\u解析器中找到。特别是,看看函数parse_uri将MongoDB uri作为参数,并返回一个包含值的字典,这些值包括用户名、密码,最重要的是,数据库 例如: from pymongo.uri_parser import parse_u

MongoClient
的文档中说,可以说“host=”并给出完整的mongodburi。其中包括一个数据库名称。一旦我这样做了,是否有某种方法可以从MongoClient对象中提取db名称?我无法在源代码中找到它。

我相信您要查找的内容可以在
pymongo.uri\u解析器中找到。特别是,看看函数
parse_uri
将MongoDB uri作为参数,并返回一个包含值的字典,这些值包括
用户名
密码
,最重要的是,
数据库

例如:

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类有一个文档记录为:

获取MongoDB连接URI中命名的数据库

MongoClient
还有一个,其中
name=None
参数定义为:

名称(可选):数据库的名称-字符串。如果没有(默认),则返回MongoDB连接URI中指定的数据库

因此,如果您只有URI,但该URI包含一个数据库名称,那么您可以像下面这样获得MongoDB数据库:

mongo\u database=pymongo.MongoClient(host=mongo\u uri).get\u default\u database()
或者像这样:

mongo\u数据库=pymongo.MongoClient(主机=mongo\u uri).get\u数据库()

上面第一个方法中的
default=
参数和第二个方法中的
name=
参数执行相同的功能:允许应用程序程序员覆盖URI中命名的数据库,或者在URI中未提供数据库时对其进行补充。

当我尝试时,我从pymongo那里得到一条警告,即“URI中的数据库名称被忽略。”