使用 Flask 和 MongoEngine 跟踪 Tumblelog 应用程序时出错
error while following Tumblelog Application with Flask and 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.
我尝试在 app.config["MONGODB_SETTINGS"]
中传入 "alias"="default"
但仍然出现相同的错误。
在您的 MONGODB_SETTINGS 字典中,数据库名称的键应该是 'db',而不是 'DB'(即全部小写)。
您收到的错误是因为 MongoEngine 扩展无法在您的配置中找到 'db' 条目,因此使用 'default' 作为数据库名称。
编辑
经进一步检查,这似乎是 (Flask-)MongoEngine(或可能的 pymongo)中某处的错误,其中 mongoengine.connect 中 read_preference 的默认值是 False 而不是实际读取偏好,并且不会转换为 pymongo
中的实际默认值
如果你添加
from pymongo import read_preferences
到您的进口和
'read_preference': read_preferences.ReadPreference.PRIMARY
到你的配置字典,它应该可以工作(这是 pymongo 中的默认 read_preference)
我正在关注 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.
我尝试在 app.config["MONGODB_SETTINGS"]
中传入 "alias"="default"
但仍然出现相同的错误。
在您的 MONGODB_SETTINGS 字典中,数据库名称的键应该是 'db',而不是 'DB'(即全部小写)。
您收到的错误是因为 MongoEngine 扩展无法在您的配置中找到 'db' 条目,因此使用 'default' 作为数据库名称。
编辑
经进一步检查,这似乎是 (Flask-)MongoEngine(或可能的 pymongo)中某处的错误,其中 mongoengine.connect 中 read_preference 的默认值是 False 而不是实际读取偏好,并且不会转换为 pymongo
中的实际默认值如果你添加
from pymongo import read_preferences
到您的进口和
'read_preference': read_preferences.ReadPreference.PRIMARY
到你的配置字典,它应该可以工作(这是 pymongo 中的默认 read_preference)