Menu Docs
Página inicial do Docs
/ / /
PyMongo
/

Escolha um destino de conexão

Nesta página

  • Visão geral
  • Atlas
  • Sistemas locais
  • Conjuntos de réplicas
  • Inicialização
  • Solução de problemas
  • Servidor MongoDB relata versão X de fio, PyMongo requer Y
  • Reconexão automática
  • Documentação da API

Neste guia, você pode aprender como usar uma string de conexão e objeto MongoClient para conectar a diferentes tipos de sistemas MongoDB.

Para se conectar a uma MongoDB deployment no Atlas, inclua os seguintes elementos em sua connection string:

  • URL do seu cluster Atlas

  • Nome de usuário do MongoDB

  • Senha do MongoDB

Em seguida, passe sua connection string para o construtor MongoClient .

Dica

Siga oguia de conexão do driver do Atlas para recuperar sua connection string.

Ao se conectar ao Atlas, recomendamos usar a opção de cliente Stable API para evitar alterações significativas quando o Atlas atualizar para uma nova versão do servidor MongoDB. Para saber mais sobre o recurso de API estável, consulte a página de API estável .

O código a seguir mostra como usar o PyMongo para se conectar a um cluster Atlas. O código também usa a opção server_api para especificar uma versão de stable API .

from pymongo import MongoClient
from pymongo.server_api import ServerApi
# Replace the placeholder with your Atlas connection string
uri = "<connection string>"
# Create a MongoClient with a MongoClientOptions object to set the Stable API version
client = MongoClient(uri, server_api=ServerApi(
version='1', strict=True, deprecation_errors=True))
try:
# Connect the client to the server (optional starting in v4.7)
client.connect()
# Send a ping to confirm a successful connection
client.admin.command({'ping': 1})
print("Pinged your deployment. You successfully connected to MongoDB!")
finally:
# Ensures that the client will close when you finish/error
client.close()

Para se conectar a uma implantação local do MongoDB, use localhost como nome do host. Por padrão, o processo mongod é executado na porta 27017, embora você possa personalizar isso para seu sistema.

O seguinte código mostra como usar o PyMongo para se conectar a um MongoDB deployment local:

from pymongo import MongoClient
uri = "mongodb://localhost:27017/"
client = MongoClient(uri)

Para se conectar a um conjunto de réplicas, especifique o nome de host (ou endereço IP) e o número de porta dos membros do conjunto de réplicas em sua connection string.

Se você não conseguir fornecer uma lista completa de hosts no conjunto de réplicas, poderá especificar um ou mais hosts no conjunto de réplicas e instruir o PyMongo a executar a descoberta automática para encontrar os outros. Para instruir o driver a realizar a descoberta automática, execute uma das seguintes ações:

  • Especifique o nome do conjunto de réplica como o valor do parâmetro replicaSet.

  • Especifique false como o valor do parâmetro directConnection.

  • Especifique mais de um host no conjunto de réplica.

No exemplo a seguir, o driver usa um URI de conexão de exemplo para se conectar ao conjunto de réplicas do MongoDB sampleRS, que está sendo executado na porta 27017 de três hosts diferentes, incluindo host1:

from pymongo import MongoClient
uri = "mongodb://host1:27017/?replicaSet=sampleRS"
client = MongoClient(uri)

Observação

O construtor MongoClient não está bloqueando. Quando você se conecta a um conjunto de réplicas, o construtor retorna imediatamente enquanto o cliente usa threads em segundo plano para se conectar ao conjunto de réplicas.

Se você construir um MongoClient e imprimir imediatamente a representação de string de seu atributo nodes , a lista poderá estar vazia enquanto o cliente se conecta aos membros do conjunto de réplicas.

Para inicializar um conjunto de réplicas, você deve se conectar diretamente a um único membro. Para fazer isso, defina a opção de conexão directConnection como True. Você pode fazer isso de duas maneiras: passando um argumento para o construtor MongoClient ou por meio de um parâmetro em sua connection string.

from pymongo import MongoClient
client = MongoClient("mongodb://<hostname>:<port>",
directConnection=True)
from pymongo import MongoClient
uri = ("mongodb://<hostname>:<port>/?"
"directConnection=true")
client = MongoClient(uri)

Se você tentar se conectar ao MongoDB Server v3.4 ou anterior, o PyMongo poderá gerar o seguinte erro:

pymongo.errors.ConfigurationError: Server at localhost:27017 reports wire version 5, but this version of PyMongo requires at least 6 (MongoDB 3.6).

Isso ocorre quando a versão do driver é muito nova para o servidor ao qual está se conectando. Para resolver esse problema, atualize seu sistema do MongoDB para v3.6 ou posterior, ou faça downgrade para o PyMongo v3.x, que oferece suporte ao MongoDB Server v2.6 e posterior.

Uma exceção AutoReconnect indica que ocorreu um failover . Isso significa que o PyMongo perdeu sua conexão com o membro primary original do conjunto de réplicas, e sua última operação pode ter falhado.

Quando esse erro ocorre, o PyMongo tenta encontrar automaticamente o novo membro principal para as operações subsequentes. Para gerenciar o erro, seu aplicativo deve realizar uma das seguintes ações:

  • Tente novamente a operação que pode ter falhado

  • Continue executando, entendendo que a operação pode ter falhado

Importante

O PyMongo gera um erro AutoReconnect em todas as operações até que o conjunto de réplicas eleja um novo membro primário.

Para saber mais sobre como criar um objeto MongoClient no PyMongo, consulte a seguinte documentação da API:

Voltar

Criar um MongoClient

Próximo

Especificar opções de conexão