pymongo==3.0.3: ImportError: нет модуля с именем соединения

Я только что обновился до pymongo==3.0.3 с помощью pip install --upgrade pymongoи меня затопило ImportError:

In [2]: pymongo.version
Out[2]: '3.0.3'

In [3]: from pymongo import Connection
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-3-dd44bc3249d3> in <module>()
----> 1 from pymongo import Connection

ImportError: cannot import name Connection

In [4]: from pymongo import connection
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-4-71c9e4ec1bcd> in <module>()
----> 1 from pymongo import connection

ImportError: cannot import name connection

In [5]: import pymongo.connection.Connection
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-5-282b89157c85> in <module>()
----> 1 import pymongo.connection.Connection

ImportError: No module named connection.Connection

3 ответа

Решение

Согласно журналу изменений Pymongo 3.0 -

MongoClient изменения

MongoClient теперь является единственным клиентским классом для автономного сервера, mongos или набора реплик. Он включает в себя функциональность, которая была разделена на MongoReplicaSetClient: он может подключаться к набору реплик, обнаруживать всех его членов и отслеживать набор на переходы, выборы и перенастройки. MongoClient теперь также поддерживает полный API ReadPreference.

Устаревшие классы MasterSlaveConnection, Connection и ReplicaSetConnection удалены.

Как вы можете видеть, класс Connection был удален из pymonge 3.0, попробуйте вместо этого использовать MongoClient. Информацию о монгоклиенте можно найти здесь

Возможно, вы можете поддерживать обе версии в своем коде, делая что-то вроде этого.

try:
    from pymongo.connection import Connection
except ImportError as e:
    from pymongo import MongoClient as Connection

Поскольку класс Connection не рекомендуется использовать в pymongo(3.0.0). Установите старую версию pymongo(2.9), чтобы она временно работала. Это можно сделать с помощью pip:

pip install  pymongo==2.9
Другие вопросы по тегам