MongoClient
的文档说可以说'host ='并提供完整的MongoDB URI。那些包括数据库名称。一旦我这样做,有没有办法从MongoClient对象中提取数据库名称?我没有在源代码中发现它。
答案 0 :(得分:3)
我相信您所寻找的内容可以在pymongo.uri_parser
中找到。特别是,请查看parse_uri函数。 parse_uri
将MongoDB URI作为参数,并返回包含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 : {}
希望这有帮助!
答案 1 :(得分:2)
MongoClient
类有一个 method called get_default_database(default=None, [...other options...])
记录为:
获取在 MongoDB 连接 URI 中命名的数据库。
MongoClient
也有一个 method called .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=
参数执行相同的功能:允许应用程序程序员覆盖 URI 中命名的数据库,或者补充它URI 中未提供。