我正在关注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"]
,但仍然遇到同样的错误。
答案 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)