我想通了如何使用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