2013-07-18 7 views
9

Ho bisogno di collegarmi a MongoDB dal mio codice Python, l'unica cosa che ho è un URL. Per mongo URL doc posso specificare il nome del database:collegamento database predefinito pymongo

mongodb://host/db_name 

Ora vorrei usare esattamente database specificato da URL e non voglio analizzare manualmente per estrarre il nome del database. Ma MongoClient non ha alcuna interfaccia per accedere a quella di default. Qualche idea su come gestirlo?

risposta

16

PyMongo/MongoClient fa (ora) fornisce un metodo get_default_database():

from pymongo import MongoClient 

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

buona notizia, vado a controllare – Dewfy

0

Sembra che non funzioni affatto. All'avvio di pymongo avviso di dump:

UserWarning: il nome del database o authSource nell'URI viene ignorato.

3

È possibile utilizzare pymongo.uri_parser.parse_uri per questo:

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}} 

In PyMongo 2.6 ci sarà un metodo get_default_database() per questo. Vedere PYTHON-461