Ошибка при нахождении значения в pymongo Mongodb

#python #database #mongodb #networking #pymongo

Вопрос:

Код

 client = pymongo.MongoClient("mongodb srv://username:password@cluster0.zcui8.mongodb.net/db?retryWrites=trueamp;w=majorityamp;ssl=trueamp;ssl_cert_reqs=CERT_NONE")
db = client["db"]

#this gives the error
res = list(db.listings.find({}).limit(15).sort([('$natural',-1)]))

 

Ошибка:

 pymongo.errors.ServerSelectionTimeoutError: No replica set members found yet
 

Я получаю эту ошибку в строке, где я назначаю переменную res .
И я не получаю эту ошибку, когда запускаю ее на своей машине, но когда я запускаю ее на сервере, я получаю ошибку.

Комментарии:

1. вы добавили новый IP — адрес вашего сервера приложений в список разрешенных в Atlas ?

2. Нет, я добавил 0.0.0.0 , чтобы все могли подключиться.

Ответ №1:

Этот тип ошибки обычно:

  • Не используете последние pymongo версии драйверов (https://pypi.org/project/pymongo/ список текущей последней версии)
  • Не имея dnspython установленного модуля (у меня были проблемы с 2.1.0, поэтому я бы рекомендовал 2.0.0)

Комментарии:

1. У меня есть dnspython, как я могу обновить pymongo до последней версии на Cpanel ?

2. Понятия не имею, никогда им не пользовался.

3. если у вас есть доступ к командной строке, вы можете запустить: «python pip install pymongo» или «sudo python pip install pymongo».

4. Я обновил pymongo и убедился, что dnspython версии 2.0.0, и все равно получил эту ошибку: pymongo.errors.ServerSelectionTimeoutError: No replica set members found yet, Timeout: 30s, Topology Description: <TopologyDescription id: 617d23fae48c883eebfe53be, topology_type: ReplicaSetNoPrimary, servers: [<ServerDescription ('cluster0-shard-00-00.zuia8.mongodb.net', 27017) server_type: Unknown, rtt: None>, <ServerDescription ('cluster0-shard-00-01.zuia8.mongodb.net', 27017) server_type: Unkn

Ответ №2:

Я перепробовал все решения в этих ответах, но единственное, что сработало, — это просто использовать flask_pymongo модуль вместо pymongo . И теперь я не получаю никаких ошибок.