MongoClient не работает, когда свойства читаются из файла конфигурации - PullRequest
0 голосов
/ 04 мая 2020

У меня проблема при подключении к mongoDb с python3. У меня есть файл конфигурации, в котором указан хост, имя пользователя и пароль, а данные необходимо прочитать из файла конфигурации. Я читаю конфигурацию, используя ConfigObj. Проблема в следующем. Если я создаю MongoClient с использованием строки stati c, то клиент работает нормально, когда я звоню cursor.next(), но когда MongoClient создается из файла конфигурации, я получаю следующую ошибку. pymon go .errors.OperationFailure: проверка подлинности не удалась.

Рабочий код.

client=MongoClient("mongodb://dummyuser:password@1.1.1.1:27071/default_db?authSource=auth_database",
maxPoolSize=10))

Если я создаю клиента в этом формате и позже из глобального вызова клиента функции и извлекаю документы, использующие cursor.next(), то работает нормально. Однако, если мы используем следующий код.

client = MongoClient(host=configuration['host'],
                   port=27071,
                   username=configuration['user'],
                   password=configuration['password'],
                   authSource=configuration['auth_database']))

После создания такого клиента, если мы звоним cursor.next(), я получаю следующую ошибку:

  File "basepath/lib/python3.7/site-packages/pymongo/helpers.py", line 159, in _check_command_response
    raise OperationFailure(msg % errmsg, code, response)
pymongo.errors.OperationFailure: Authentication failed.

Я не могу понять, что меняется. Пожалуйста, помогите мне.

Конфигурационный файл имеет формат.

[mongodb]

 [[connection]]
  host = 1.1.1.1
  port = 27071
  user = dummy_user
  password = password
  authentication_database = auth_data

и прочитанный диктант имеет вид

{'host': '1.1.1.1', 'user': 'dummy_user', 'password': 'password',  'authentication_database': 'auth_data', 'port': 27071}
...