我在與MongoHQ Heroku的插件的麻煩。本地我的應用程序工作和OS變量是存在和良好的Heroku。但是,當我嘗試訪問數據庫時,它會引發錯誤:OperationFailure: database error: unauthorized db:my_database ns:my_database.cars lock type:0 client:128.62.187.133
。如果我嘗試從MongoHQ硬編碼連接字符串並在本地運行,我會得到相同的錯誤。Heroku的MongoHQ插件和PyMongo - OperationFailure:數據庫錯誤:未經授權
我的應用低於:
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)
...
編輯:MongoHQ支持幫助我。問題在於我打電話給我的數據庫my_database
而不是MongoHQ插件給我的實際數據庫名稱。例如,db = connection.app52314314
。這個改變解決了它。
不,當我插入的'db.authenticate(...)同樣的問題'後立即調用'DB = connection.my_database' –
我給你發了郵件。 –
通過電子郵件回覆。解決方案是將數據庫命名爲MongoHQ db。請參閱編輯獲得完整答案。 –