使用Flask和MongoEngine跟踪Tumblelog应用程序时出错

时间:2015-04-08 14:44:50

标签: python mongodb flask flask-mongoengine

我正在关注tumbleblog申请here

我的__init__.py

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

app = Flask(__name__)
app.config["MONGODB_SETTINGS"] = {'DB': "sencha_web_service", 'username': "<username>", "password": "<password>"}
app.config["SECRET_KEY"] = "KeepThisS3cr3t"

db = MongoEngine(app)

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

我收到错误:

mongoengine.connection.ConnectionError: Cannot connect to database default :
False is not a read preference.

我尝试在"alias"="default"中传递app.config["MONGODB_SETTINGS"],但仍然遇到同样的错误。

1 个答案:

答案 0 :(得分:11)

在您的MONGODB_SETTINGS词典中,数据库名称的键应该是&#39; db&#39;而不是&#39; DB&#39; (即全部小写)。

您收到的错误是因为MongoEngine扩展无法找到&#39; db&#39;在您的配置中输入,因此使用&#39;默认&#39;作为数据库名称。

修改

经过进一步检查,似乎这是(Flask-)MongoEngine(或可能的pymongo)中某处的错误,其中mongoengine.connect中的read_preference的默认值为False而不是实际的读取首选项,并且未转换为pymongo的实际默认值

如果你添加

from pymongo import read_preferences

到您的导入和

'read_preference': read_preferences.ReadPreference.PRIMARY

到您的配置字典,它应该工作(这是pymongo中的默认read_preference)