2015-04-08 4 views
8

Ich folge tumbleblog Anwendung hereFehler beim folgenden Tumblelog Anwendung mit Flasche und MongoEngine

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

ich den Fehler:

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

Ich versuchte vorbei in "alias"="default" in app.config["MONGODB_SETTINGS"], aber immer noch der gleiche Fehler.

Antwort

11

In Ihrem Wörterbuch MONGODB_SETTINGS sollte der Schlüssel für den Datenbanknamen 'DB' sein, nicht 'DB' (d. H. Kleinbuchstaben).

Der Fehler, den Sie bekommen, liegt daran, dass die MongoEngine-Erweiterung den 'db'-Eintrag in Ihrer Konfiguration nicht finden kann und so' default 'als Datenbanknamen verwendet.

bearbeiten

Bei einer weiteren Untersuchung, so scheint es dabei um einen Fehler irgendwo in (Flask-) MongoEngine (oder möglich pymongo), wobei der Standardwert von read_preference in mongoengine.connect Falsch anstelle eines tatsächlichen Lese- bevorzugt, und ist mit dem tatsächlichen Standard in pymongo

Wenn Sie

from pymongo import read_preferences 

auf Ihre Importe und

hinzufügen nicht transformiert
'read_preference': read_preferences.ReadPreference.PRIMARY 

auf der Config-Wörterbuch, sollte es funktionieren (das ist der Standard read_preference in pymongo)

+0

ich versucht habe, dass auch .. app.config [ "MONGODB_SETTINGS"] = { 'db': „sencha_web_service “ 'username': "", "Passwort": "", "Port": 27017 } –

+0

@Samuel Littley das ist richtig - es ist ein Fehler in der neuesten Version. – okoboko

+0

als jemand darüber auf GitHub berichtete? – dpgaspar

Verwandte Themen