我需要从我的 Python 代码连接到 MongoDB,我唯一拥有的是一个 url。每个mongo URL doc我可以指定数据库名称:
mongodb://host/db_name
现在我想完全使用从 URL 指定的数据库,并且不想手动解析它来提取数据库的名称。但是MongoClient
没有访问默认的接口。任何想法如何管理这个?
我需要从我的 Python 代码连接到 MongoDB,我唯一拥有的是一个 url。每个mongo URL doc我可以指定数据库名称:
mongodb://host/db_name
现在我想完全使用从 URL 指定的数据库,并且不想手动解析它来提取数据库的名称。但是MongoClient
没有访问默认的接口。任何想法如何管理这个?
PyMongo/MongoClient 确实(现在)提供了一个get_default_database()
方法:
from pymongo import MongoClient
client = MongoClient("mongodb://host/db_name")
db = client.get_default_database()
您可以为此使用 pymongo.uri_parser.parse_uri :
Python 2.7.5 (default, Jul 12 2013, 14:44:36)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> uri = "mongodb://user:pass@example.com/my_database/?w=2"
>>> from pymongo.uri_parser import parse_uri
>>> parse_uri(uri)
{'username': 'user', 'nodelist': [('example.com', 27017)], 'database': 'my_database/',
'collection': None, 'password': 'pass', 'options': {'w': 2}}
在 PyMongo 2.6 中将有一个 get_default_database() 方法。见Python-461
看起来它根本不起作用。启动 pymongo
转储警告时:
用户警告:URI 中的数据库名称或 authSource 被忽略。