我需要从我的Python代码连接到MongoDB,我唯一拥有的是一个url。每mongo URL doc我可以指定数据库名称:
mongodb://host/db_name
现在我想使用从URL指定的数据库,并且不想手动解析它以提取数据库的名称。但MongoClient
没有访问默认界面的界面。有任何想法如何管理?
答案 0 :(得分:20)
PyMongo / MongoClient(现在)提供get_default_database()
方法:
from pymongo import MongoClient
client = MongoClient("mongodb://host/db_name")
db = client.get_default_database()
答案 1 :(得分:3)
你可以使用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
答案 2 :(得分:0)
看起来根本不起作用。启动pymongo
转储时警告:
UserWarning:URI中的数据库名称或authSource被忽略。