2016-02-06 3 views
3

Я обновлял свой рабочий проект django до python3.4. После развертывания я получил следующую проблему!Объект коллекции не является вызываемой ошибкой в ​​PyMongo с server_info()

(Тот же проект отлично работает под python2.7 с pymongo2.8 вкусом.)

У меня есть pymongo3.2 & django-mongo-sessions наряду с другими библиотеками

File "/home/ec2-user/py33/local/lib/python3.4/site-packages/mongo_sessions/session.py", line 8, in <module> 
from mongo_sessions import settings 

File "/home/ec2-user/py33/local/lib/python3.4/site-packages/mongo_sessions/settings.py", line 36, in <module> 
MONGO_DB_VERSION = MONGO_CLIENT.connection.server_info()['version'] 

File "/home/ec2-user/py33/local/lib64/python3.4/site-packages/pymongo/collection.py", line 2348, in __call__ 
self.__name.split(".")[-1]) 

TypeError: 'Collection' object is not callable. If you meant to call the 'server_info' method on a 'Collection' object it is failing because no such method exists. 

Я посмотрел в this вопрос, который выглядит аналогично. Но я уверен, что сам использую pymongo3.2!

+0

Я исправил проблему временно, понизив версию 'pymongo' до' 2.8'. Итак, проблема с 'pymongo 3.2'? Или что-то еще? – ranjjose

ответ

2

Похоже, что django-mongo-сеансы не были обновлены для поддержки PyMongo 3.x. Ваша конкретная проблема заключается в том, что Database.connection было переименовано в Database.client в PyMongo 3.0. Неисправность линии кода должна быть изменена на:

MONGO_DB_VERSION = MONGO_CLIENT.client.server_info()['version'] 

Это, вероятно, не единственное обязательное изменение. Подробности см. На странице migration guide.

+0

Спасибо, @ Bernie это сработало! – ranjjose

Смежные вопросы