8

我在这里关注 tumbleblog 应用程序

我的__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"]

4

1 回答 1

11

在您的 MONGODB_SETTINGS 字典中,数据库名称的键应该是“db”,而不是“DB”(即全部小写)。

您收到的错误是因为 MongoEngine 扩展在您的配置中找不到“db”条目,因此使用“默认”作为数据库名称。

编辑

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

如果你添加

from pymongo import read_preferences

到您的进口和

'read_preference': read_preferences.ReadPreference.PRIMARY

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

于 2015-04-08T14:51:23.123 回答