Ho problemi con l'addon MongoHQ Heroku. A livello locale la mia app funziona e la variabile os è presente e ben formata su Heroku. Tuttavia, quando provo ad accedere al db, viene generato un errore: OperationFailure: database error: unauthorized db:my_database ns:my_database.cars lock type:0 client:128.62.187.133
. Se provo a codificare la stringa di connessione da MongoHQ ed eseguo localmente, ottengo lo stesso errore.Heroku MongoHQ add-on e PyMongo - OperationFailure: errore del database: non autorizzato
La mia app è qui sotto:
import os
import datetime
from flask import Flask
from flask import g
from flask import jsonify
from flask import json
from flask import request
from flask import url_for
from flask import redirect
from flask import render_template
from flask import make_response
import pymongo
from pymongo import Connection
from bson import BSON
from bson import json_util
app = Flask(__name__)
def mongo_conn():
# Format: MONGOHQ_URL: mongodb://<user>:<pass>@<base_url>:<port>/<url_path>
if os.environ.get('MONGOHQ_URL'):
return Connection(os.environ['MONGOHQ_URL'])
else:
return Connection()
@app.route('/', methods=['GET', 'POST'])
def hello():
# Get your DB
connection = mongo_conn()
db = connection.my_database
# Create an object
car = {"brand": "Ford",
"model": "Mustang",
"date": datetime.datetime.utcnow()}
# Get your collection
cars = db.cars # crashes
# Insert it
cars.insert(car)
...
Edit: supporto MongoHQ mi ha aiutato. Il problema era che stavo chiamando il mio database my_database
invece del nome effettivo del DB che mi ha dato l'addon MongoHQ. Ad esempio, db = connection.app52314314
. Quel cambiamento l'ha risolto.
No, lo stesso problema quando inserisco la chiamata 'db.authenticate (...)' immediatamente dopo 'db = connection.my_database' –
Ti ho inviato una email. –
Risposta via email. La soluzione era di nominare il db lo stesso del db MongoHQ. Vedi Modifica per la risposta completa. –