Могу ли я использовать строку подключения, сгенерированную в MongoDB Compass в Pymongo?

#mongodb #pymongo #mongodb-compass

#mongodb #pymongo #mongodb-compass

Вопрос:

Я пытаюсь подключиться к MongoDB с помощью python, используя Pymongo. Код, который я использовал, является: cluster=MongoClient("connection_String_url") connection_String_url был сгенерирован в MongoDB Compass. Эта команда может быть выполнена на python, но, похоже, она не работает, потому что все другие операции, в которых использовался этот кластер, имели ту же ошибку «Ошибка тайм-аута выбора сервера: сбой подтверждения SSL».

Основываясь на некоторых других ответах, я попробовал «ssl_cert_reqs = ssl.CERT_NONE», но также не работает с ошибкой: не авторизован администратором для выполнения команды. MongoClient("connection_String_url",ssl_cert_reqs=ssl.CERT_NONE) Команда также может быть выполнена через.

Мне просто интересно, связано ли это с моим кодом или этот «connection_String_url» просто не может быть использован в этом случае, потому что я вижу, что люди обычно используют строку подключения Altas в этом случае.

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

1. Пожалуйста, добавьте строку подключения, которую вы используете, чтобы помочь нам помочь вам. Вы должны отредактировать пароль.

Ответ №1:

Я искал это некоторое время, так как я привык использовать MongoDB compass с Node.js проекты. С учетом сказанного, следующий код помог мне подключиться. Строка подключения вставляется точно из информации кластера MongoDB Compass (с удалением конфиденциальной информации).

 import pymongo
maxSevSelDelay = 1
try:
    client = pymongo.MongoClient("mongodb srv://<USER>:<PASSWORD>@<MONGO CLUSTER>.mongodb.net/<DB NAME>?authSource=adminamp;replicaSet=Cluster0-shard-0amp;w=majorityamp;readPreference=primaryamp;appname=MongoDB Compassamp;retryWrites=trueamp;ssl=true",
                             serverSelectionTimeoutMS=maxSevSelDelay)
    client.server_info() 

except pymongo.errors.ServerSelectionTimeoutError as err:
    print(err)