2013-07-18 4 views
9

Мне нужно подключиться к MongoDB из моего кода Python, единственное, что у меня есть, это URL. Per mongo URL doc можно указать имя базы данных:pymongo default database connection

mongodb://host/db_name 

Теперь я хотел бы использовать именно базу данных, указанные в URL и не хочу, чтобы разобрать его вручную, чтобы извлечь имя базы данных. Но у MongoClient нет интерфейса для доступа по умолчанию. Любые мысли, как справиться с этим?

ответ

16

PyMongo/MongoClient делает (в настоящее время) обеспечивают get_default_database() метод:

from pymongo import MongoClient 

client = MongoClient("mongodb://host/db_name") 
db = client.get_default_database() 
+0

хорошие новости, я буду проверять – Dewfy

0

Похоже, что это не работает вообще. При запуске pymongo сбрасывает предупреждение:

Пользовательское предупреждение: имя базы данных или источник authSource в URI игнорируется.

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:[email protected]/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