【问题标题】:error while following Tumblelog Application with Flask and MongoEngine使用 Flask 和 MongoEngine 跟踪 Tumblelog 应用程序时出错
【发布时间】: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",但仍然遇到同样的错误。

【问题讨论】:

    标签: python mongodb flask flask-mongoengine


    【解决方案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': "", "password": "", "端口": 27017 }
    • @Samuel Littley 这是正确的 - 这是最新版本中的错误。
    • 有人在 github 上报告过这个吗?
    • 它是 pymongo 的一个问题.. 将 pymongo 降级到 2.7.2,现在它可以在 mongoengine-0.9.0 上正常工作
    • 快速浏览一下 MongoDB JIRA 得出了这个结论:jira.mongodb.org/browse/PYTHON-719 看起来使用 pymongo 2.7 分支是目前的选择。
    猜你喜欢
    • 2015-06-08
    • 2012-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-27
    • 1970-01-01
    相关资源
    最近更新 更多