2013-07-18 12 views
9

Ich muss aus meinem Python-Code mit MongoDB verbinden, das einzige, was ich habe, ist eine URL. Per mongo URL doc kann ich Datenbanknamen angeben:pymongo Standard-Datenbankverbindung

mongodb://host/db_name 

Jetzt würde ich genau Datenbank von URL angegeben verwenden möchten und nicht wollen, dass es analysieren manuell Namen Datenbank zu extrahieren. Aber MongoClient haben keine Schnittstelle, um auf Standard zuzugreifen. Irgendwelche Gedanken, wie man das schafft?

Antwort

16

PyMongo/MongoClient ist (jetzt) ​​eine get_default_database() Methode:

from pymongo import MongoClient 

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

eine gute Nachricht, ich werde überprüfen – Dewfy

0

Sieht aus wie es überhaupt nicht funktioniert. Beim Start pymongo dumps Warnung:

UserWarning: Datenbankname oder AuthSource in URI wird ignoriert.

3

Sie können pymongo.uri_parser.parse_uri für diesen Einsatz:

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 wird es eine get_default_database() -Methode für diese sein. Siehe PYTHON-461