的文档MongoClient
说有人可能会说“host=”并给出完整的 MongoDB URI。其中包括数据库名称。一旦我这样做了,有没有办法从 MongoClient 对象中提取数据库名称?我没有在源代码中发现它。
问问题
2261 次
2 回答
5
我相信您正在寻找的内容可以在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 : {}
希望这可以帮助!
于 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=
和第二个方法中的参数执行相同的功能:允许应用程序程序员覆盖 URI 中指定的数据库,或者如果 URI 中没有提供数据库,则对其进行补充。
于 2021-01-08T21:58:23.573 回答