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 と一致する必要があります。
次に、この設定を使用してMongoDBのtumblelog チュートリアルに従い、tumblelogという名前の最初のアプリを作成します。
Python の気の利いたオブジェクト イントロスペクション (python oh how I love you so) を使用すると、MongoEngine ラッパー クラスがこれをどのように達成するかを確認できます。
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