使用 Flask 和 MongoEngine 跟踪 Tumblelog 应用程序时出错
Posted
技术标签:
【中文标题】使用 Flask 和 MongoEngine 跟踪 Tumblelog 应用程序时出错【英文标题】:error while following Tumblelog Application with Flask and MongoEngine 【发布时间】:2015-06-13 14:30:51 【问题描述】:我正在关注 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"
,但仍然遇到同样的错误。
【问题讨论】:
【参考方案1】:在您的 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)
【讨论】:
我也试过了.. app.config["MONGODB_SETTINGS"] = 'db': "sencha_web_service", 'username': "以上是关于使用 Flask 和 MongoEngine 跟踪 Tumblelog 应用程序时出错的主要内容,如果未能解决你的问题,请参考以下文章
使用 Flask 和 MongoEngine 开发 Tumblelog 应用程序时出错
Flask,Pymongo和Mongoengine - ImportError:无法导入名称'app'
pip install flask-mongoengine报错
带有 mongoengine 的 Flask 应用程序的 Elastic Beanstalk WSGI 部署的“您尚未定义默认连接”