的文档MongoClient说,人们可能会说“host=”并给出完整的 MongoDB URI。这些包括数据库名称。一旦我这样做了,有没有办法从 MongoClient 对象中提取数据库名称?我没有在源代码中发现它。
该类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()
Run Code Online (Sandbox Code Playgroud)
或者像这样:
mongo_database = pymongo.MongoClient(host=mongo_uri).get_database()
Run Code Online (Sandbox Code Playgroud)
default=上面第一个方法中的参数和第二name=个方法中的参数执行相同的功能:允许应用程序程序员覆盖 URI 中指定的数据库,或者如果 URI 中未提供数据库则对其进行补充。
我相信你正在寻找的东西可以在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
Run Code Online (Sandbox Code Playgroud)
将打印
username : james
nodelist : [('localhost', 27017)]
database : test
connection : None
password : brewer
options : {}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
1558 次 |
| 最近记录: |