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