ошибка при использовании приложения Tumblelog с Flask и MongoEngine

8

Я следую за приложением tumbleblog здесь

my __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"], но все равно получаю ту же ошибку.

Теги:
flask
flask-mongoengine

1 ответ

11
Лучший ответ

В вашем словаре MONGODB_SETTINGS ключ для имени базы данных должен быть "db", а не "DB" (т.е. все строчные буквы).

Ошибка, которую вы получаете, заключается в том, что расширение MongoEngine не может найти запись "db" в вашей конфигурации и поэтому использует "по умолчанию" в качестве имени базы данных.

Edit

При дальнейшем осмотре кажется, что это ошибка где-то в (Flask-) MongoEngine (или возможный pymongo), где значение по умолчанию read_preference в mongoengine.connect является False вместо фактического предпочтения чтения и не преобразуется в фактическое значение по умолчанию в pymongo

Если вы добавите

from pymongo import read_preferences

для вашего импорта и

'read_preference': read_preferences.ReadPreference.PRIMARY

в ваш словарь конфигурации, он должен работать (что по умолчанию read_preference в pymongo)

  • 0
    я тоже это пробовал .. app.config ["MONGODB_SETTINGS"] = {'db': "sencha_web_service", 'username': "<username>", "password": "<password>", "port": 27017 }
  • 0
    @Samuel Littley Это правильно - это ошибка в последней версии.
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню