2014-10-28 5 views
0

Я новичок и у меня есть простое приложение, я разработал локально, который использует MongoDB с mongoKit следующим образом:Колба с MongoDB, используя MongoKit для MongoLabs

app = Flask(__name__) 
app.config.from_object(__name__) 

customerDB = MongoKit(app) 
customerDB.register([CustomerModel]) 

то в представлениях я просто использовать CustomerDB

Я поместил все на облако heroku, но мое подключение к базе данных не работает.

Я получил ссылку мне нужно подключить по:

heroku config | grep MONGOLAB_URI 

, но я не знаю, как осуществить это. Я посмотрел следующий пост, но я больше смущен How can I use the mongolab add-on to Heroku from python?

Любая помощь будет оценена.

Спасибо!

ответ

1

Согласно the documentation, Flask-MongoKit поддерживает набор параметров конфигурации.

MONGODB_DATABASE 
MONGODB_HOST 
MONGODB_PORT 
MONGODB_USERNAME 
MONGODB_PASSWORD 

MONGOLAB_URI установка среда должна быть разобрана, чтобы каждый из них. Мы можем использовать this answer на вопрос, с которым вы связались как отправная точка.

import os 
from urlparse import urlsplit 

from flask import Flask 
from flask_mongokit import MongoKit 

app = Flask(__name__) 

# Get the URL from the Heroku setting. 
url = os.environ.get('MONGOLAB_URI', 'mongodb://localhost:27017/some_db_name') 
# Parse it. 
parsed - urlsplit(url) 

# The database name comes from the path, minus the leading /. 
app.config['MONGODB_DATABASE'] = parsed.path[1:] 

if '@' in parsed.netloc: 
    # If there are authentication details, split the network locality. 
    auth, server = parsed.netloc.split('@') 
    # The username and password are in the first part, separated by a :. 
    app.config['MONGODB_USERNAME'], app.config['MONGODB_PASSWORD'] = auth.split(':') 
else: 
    # Otherwise the whole thing is the host and port. 
    server = parsed.netloc 

# Split whatever version of netloc we have left to get the host and port. 
app.config['MONGODB_HOST'], app.config['MONGODB_PORT'] = server.split(':') 

customerDB = MongoKit(app) 
+0

Спасибо, сэр! Это сработало для меня – emraldinho