tutorial databases python mongodb heroku mlab

python - tutorial - databases django mongodb



¿Cómo puedo usar el complemento de mongolab para Heroku de Python? (5)

La documentación solo habla sobre cómo hacerlo desde ruby.


Esto es Will de MongoLab. Tenemos un ejemplo genérico de cómo conectarse en Python usando el controlador oficial de python (pymongo). Este ejemplo no es para conectarse desde Heroku por decir, pero debería ser similar. La diferencia es que tendrá que arrancar la configuración del controlador de su entorno Heroku ENV para suministrarlo al controlador.

https://github.com/mongolab/mongodb-driver-examples/blob/master/python/pymongo_simple_example.py

Si todavía tiene problemas, no dude en contactarnos directamente a [email protected]

-será


Obtenga la configuración de la cadena de conexión ejecutando heroku config en la línea de comando después de instalar el complemento en su aplicación heroku.

Habrá una entrada con la clave MONGOLAB_URI en esta forma:

MONGOLAB_URI => mongodb://user:[email protected]:27707/db

Simplemente la información de uri en python al crear una conexión desde la cadena uri.


Creo que algo como esto debería funcionar:

import os import sys import pymongo mongo_url = os.getenv(''MONGOLAB_URI'', ''mongodb://localhost:27017'') db_name = ''mongotest'' if __name__ == ''__main__'': try: connection = pymongo.Connection(mongo_url) if ''localhost'' in self.mongo_url: db_name = ''my_local_db_name'' else: db_name = self.mongo_url.rsplit(''/'',1)[1] database = connection[db_name] except: print(''Error: Unable to Connect'') connection = None if connection is not None: database.test.insert({''name'': ''foo''})


PyMongo ahora proporciona un método get_default_database() que hace que todo este ejercicio sea trivial:

from pymongo import MongoClient client = MongoClient(os.environ[''MONGOLAB_URI'']) db = client.get_default_database()


Estoy usando lo siguiente:

import os from urlparse import urlsplit from pymongo import Connection url = os.getenv(''MONGOLAB_URI'', ''mongodb://localhost:27017/testdb'') parsed = urlsplit(url) db_name = parsed.path[1:] # Get your DB db = Connection(url)[db_name] # Authenticate if ''@'' in url: user, password = parsed.netloc.split(''@'')[0].split('':'') db.authenticate(user, password)