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)