无法对PyMongo数据库进行身份验证

时间:2012-09-28 17:41:24

标签: 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 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

在Hugpers.py文件中,PyMongo的_unpack_response函数引发了OperationFailure异常,特别是第103和104行。

1 个答案:

答案 0 :(得分:3)

这对我来说不对:

db = connection['MONGODB_DB']

也许你想要

db = connection[config['MONGODB_DB']]