ошибка при следовании за приложением Tumblelog с помощью Flask и MongoEngine

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


person Nidhin Bose J.    schedule 08.04.2015    source источник


Ответы (1)


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

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

Изменить

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

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

from pymongo import read_preferences

к вашему импорту и

'read_preference': read_preferences.ReadPreference.PRIMARY

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

person Samuel Littley    schedule 08.04.2015
comment
я тоже пробовал это. - person Nidhin Bose J.; 08.04.2015
comment
@Samuel Littlely Это правильно - это ошибка в последнем выпуске. - person okoboko; 08.04.2015
comment
как кто-нибудь сообщил об этом на github? - person dpgaspar; 09.04.2015
comment
это проблема с pymongo.. понизьте pymongo до 2.7.2, и теперь он отлично работает с mongoengine-0.9.0 - person gsuresh92; 11.04.2015
comment
Беглый взгляд на MongoDB JIRA показал следующее: 719 Похоже, что на данный момент лучше использовать ветку pymongo 2.7. - person austin; 15.04.2015
comment
В моем случае у меня просто было mongoengine>=0.8.4,<0.9 в моем файле requirements.txt, и pymongo неявно загружался. Добавление pymongo>=2.7,<3.0 к этому файлу устранило проблему. - person z0r; 15.04.2015
comment
В тикете Jira указано, что они не собираются это исправлять. Каким будет новый способ установить это? - person ericso; 15.05.2015