Python Can';t对PyMongo数据库进行身份验证
以下是我尝试验证的代码:Python Can';t对PyMongo数据库进行身份验证,python,mongodb,pymongo,Python,Mongodb,Pymongo,以下是我尝试验证的代码: # MongoDB connection connection = Connection(f.config['MONGODB_HOST'], f.config['MONGODB_PORT']) db = connection['MONGODB_DB'] # Try authenticating. This will only work in production. In development, # MONGODB_USER and MONGODB_PASSWORD
# MongoDB connection
connection = Connection(f.config['MONGODB_HOST'], f.config['MONGODB_PORT'])
db = connection['MONGODB_DB']
# Try authenticating. This will only work in production. In development,
# MONGODB_USER and MONGODB_PASSWORD will raise KeyErrors.
try:
db.authenticate(f.config['MONGODB_USER'], f.config['MONGODB_PASSWORD'])
except KeyError:
f.logger.debug('KeyError: Not authenticating.')
# Temporary. This is just for testing purposes.
users = db.users
user = users.find_one({'username': 'BrewerOnRails'})
我的配置是从名为ProductionConfig的对象加载的:
class Config(object):
'''Default configuration object.'''
DEBUG = False
TESTING = False
PORT = int(os.environ.get('PORT', 5000))
class ProductionConfig(Config):
'''Configuration object specific to production environments.'''
REDIS_URL = os.environ.get('REDISTOGO_URL')
if REDIS_URL:
url = urlparse.urlparse(REDIS_URL)
REDIS_HOST = url.hostname
REDIS_PORT = url.port
REDIS_PASSWORD = url.password
MONGOLAB_URI = os.environ.get('MONGOLAB_URI')
if MONGOLAB_URI:
url = urlparse.urlparse(MONGOLAB_URI)
MONGODB_USER = url.username
MONGODB_PASSWORD = url.password
MONGODB_HOST = url.hostname
MONGODB_PORT = url.port
MONGODB_DB = url.path[1:]
以下是我不断遇到的错误:
pymongo.errors.OperationFailure: database error: unauthorized db:MONGODB_DB lock type:-1 client:10.117.107.165
OperationFailure异常是由helpers.py文件中的PyMongo函数引发的,特别是第103行和第104行。我认为这是错误的:
db = connection['MONGODB_DB']
也许你想要
db = connection[config['MONGODB_DB']]
这正是我真正需要的
db=connection['MONGODB\u db']
应该是db=connection[f.config['MONGODB\u db']]
。谢谢。:)