Вызов метода аутентификации Monogdb / pymongo завершается неудачно, поскольку такого метода не существует

У меня проблема с подключением к MongoDb с использованием драйвера pymongo (Python 3.10, pymongo 4.2.0, MongoDb 6), в частности, шаги аутентификации не выполняются. Пожалуйста, смотрите ниже мой код:

import pymongo
from pymongo import MongoClient


client=MongoClient('mongodb://10.10.1.8:27017')
client.admin.authenticate('dev01','my_password_here')

Я нахожусь за брандмауэром компании, поэтому вы видите внутренний IP-адрес - 10.10.1.8

Когда я пытаюсь протестировать код Python для хранения данных, я получаю следующую ошибку:

  File "C:\Users\ABC\Documents\python_development\pymongo_test.py", line 7, in <module>

    client.admin.authenticate('dev01','my_password_here')

  File "C:\Users\ABC\AppData\Local\Programs\Python\Python310\lib\site-packages\pymongo\collection.py", line 3194,
 in __call__ raise TypeError(
TypeError: 'Collection' object is not callable. If you meant to call the 'authenticate' method
 on a 'Database' object it is failing because no such method exists.

MongoDb находится на виртуальном сервере Linux Ubuntu, который находится поверх сервера Linux Debian. На моем ноутбуке стоит Windows 10.

Код выглядит правильно, есть идеи, почему это происходит?

🤔 А знаете ли вы, что...
MongoDB имеет встроенную поддержку геоиндексации и геоспецифичных запросов...


1
104
1

Ответ:

Решено

Руководство по переходу с pymongo 3.x на 4.x https://pymongo.readthedocs.io/en/stable/migrate-to-pymongo4.html?highlight=authenticate#database-authenticate-and-database-logout-are-removed гласит:

Удалены pymongo.database.Database.authenticate() и pymongo.database.Database.logout(). Аутентификация нескольких пользователей на одном клиенте конфликтует с поддержкой логических сеансов в MongoDB 3.6+. Для аутентификации нескольких пользователей создайте несколько экземпляров MongoClient. Код такой:

client = MongoClient()
client.admin.authenticate('user1', 'pass1')
client.admin.authenticate('user2', 'pass2')

можно изменить на это:

client1 = MongoClient(username='user1', password='pass1')
client2 = MongoClient(username='user2', password='pass2')