我想通了如何使用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)[email protected]'+
HOST +':%(MONGODB_PORT)s/%(MONGODB_DB)s') % db_settings
db = MongoEngine(app)
if __name__ == '__main__':
app.run()
如果您使用mongohq,app.config["MONGODB_HOST"]
應在數據庫 - >管理 - >概述匹配蒙戈URI。
然後,您可以使用此設置來寫你的第一個應用程序稱爲的tumblelog遵循MongoDB的的tumblelog tutorial。
使用Python的俏皮對象自省(蟒蛇哦我怎麼愛你這樣),你可以看到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
用戶名和密碼從何而來? – 2013-08-03 21:30:25
用戶名/密碼來自您的mongohq賬戶: 創建一個免費的沙箱賬戶,並在數據庫 - >管理 - >用戶爲數據庫創建一個用戶名/密碼。然後在Databases-> Collections下點擊'直接連接到你的數據庫',並且首先嚐試mongo命令。然後將用戶/密碼和應用信息複製到此處發佈的解決方案。 – antimatter 2014-04-14 22:23:18
如果你仍然有興趣讓MongoEngine包裝類工作,請參閱我的回覆:) – antimatter 2014-04-15 00:07:37