2015-04-08 15 views
8

Seguo applicazione tumbleblog hereerrore durante la seguente Tumblelog Applicazione con la boccetta e MongoEngine

mia __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() 

ottengo l'errore:

mongoengine.connection.ConnectionError: Cannot connect to database default : 
False is not a read preference. 

ho provato passando in "alias"="default" in app.config["MONGODB_SETTINGS"] ma continua a ricevere lo stesso errore.

risposta

11

Nel tuo dizionario MONGODB_SETTINGS, la chiave per il nome del database deve essere 'db', non 'DB' (cioè tutto in minuscolo).

L'errore che si ottiene è dovuto al fatto che l'estensione MongoEngine non è in grado di trovare la voce "db" nella configurazione e pertanto utilizza "predefinito" come nome del database.

Modifica

Ulteriori controlli in seguito, sembra che questo è un bug da qualche parte in (Flask-) MongoEngine (o possibile pymongo) dove il valore di default di read_preference in mongoengine.connect è False invece che una lettura reale la preferenza, e non si trasforma al default reale in pymongo

Se si aggiunge

from pymongo import read_preferences 

alle vostre importazioni e

'read_preference': read_preferences.ReadPreference.PRIMARY 

al dizionario di configurazione, dovrebbe funzionare (che è il default in read_preference pymongo)

+0

Ho provato anche questo .. app.config [ "MONGODB_SETTINGS"] = { 'db': "sencha_web_service ", 'username': "", "password": "", "porta": 27017 } –

+0

@Samuel Littley Questo è corretto - è un bug nella versione più recente. – okoboko

+0

come qualcuno ha segnalato questo su github? – dpgaspar