Mongoengine flask connect via uri

Hi, I have a small flash drive app that I am deploying to a hero.

My local configuration is as follows:

from flask import Flask
from flask.ext.mongoengine import MongoEngine

app = Flask(__name__)
app.debug = True
app.config["MONGODB_SETTINGS"] = {'DB': "my_app"}
app.config["SECRET_KEY"] = "secretpassword"

db = MongoEngine(app)

So, I know that I need to configure the application to use the mongo connection method URI, and I have connection information:

mongodb://<user>:<password>@alex.mongohq.com:10043/app12345678

I'm just a little fixated on the syntax for modifying my application to connect through URI.

Any help would be greatly appreciated.

+5
source share
3 answers

So I got the job (finally):

from flask import Flask
from mongoengine import connect

app = Flask(__name__)

app.config["MONGODB_DB"] = 'app12345678'
connect(
    'app12345678',
    username='heroku',
    password='a614e68b445d0d9d1c375740781073b4',
    host='mongodb://<user>:<password>@alex.mongohq.com:10043/app12345678',
    port=10043
)

Although I expect various other configurations to work.

+5
source

-, ,

, :

app.config["MONGODB_HOST"] = 'alex.mongohq.com/app12345678'
app.config["MONGODB_PORT"] = 10043
app.config["MONGODB_DATABASE"] = 'dbname'
app.config["MONGODB_USERNAME"] = 'user'
app.config["MONGODB_PASSWORD"] = 'password'
db = MongoEngine(app)

, app123 - . , , . Mongokit + MongoLab Heroku:)

URI, .

app.config["MONGODB_SETTINGS"] = {'DB': "my_app", "host":'mongodb://<user>:<password>@alex.mongohq.com:10043/app12345678'}

, "MONGODB_SETTINGS" , , , , .

+3

, flask.ext.mongoengine.MongoEngine , mongoengine.connect():

from flask import Flask
from flask.ext.mongoengine import MongoEngine

app = Flask(__name__)

HOST = '<hostname>'  # ex: 'oceanic.mongohq.com'
db_settings = {
    'MONGODB_DB': '<database>',
    'MONGODB_USERNAME': '<username>',
    'MONGODB_PASSWORD': '<password>',
    'MONGODB_PORT': <port>,
}
app.config = dict(list(app.config.items()) + list(db_settings.items()))
app.config["MONGODB_HOST"] = ('mongodb://%(MONGODB_USERNAME)s:%(MONGODB_PASSWORD)s@'+
                               HOST +':%(MONGODB_PORT)s/%(MONGODB_DB)s') % db_settings

db = MongoEngine(app)

if __name__ == '__main__':
    app.run()

mongohq, app.config["MONGODB_HOST"] Mongo URI → Admin- > Overview.

MongoDB tumblelog, , tumblelog.

Using the introspection of the python nifty object (python oh, as I love you), you can see how the MongoEngine shell class does this:

from flask.ext.mongoengine import MongoEngine
import inspect
print(inspect.getsource(MongoEngine))
    ...
    conn_settings = {
        'db': app.config.get('MONGODB_DB', None),
        'username': app.config.get('MONGODB_USERNAME', None),
        'password': app.config.get('MONGODB_PASSWORD', None),
        'host': app.config.get('MONGODB_HOST', None),
        'port': int(app.config.get('MONGODB_PORT', 0)) or None
    }
     ...
     self.connection = mongoengine.connect(**conn_settings)
     ...
     self.app = app
0
source

All Articles