WEBINARHow to build smarter AI apps with Python and MongoDB. Register now >
NEWHow to build smarter AI apps with Python and MongoDB. Register now >

Como usar Python com MongoDB

Use o Atlas para acompanhar
Conecte-se gratuitamente já

Python, a principal linguagem de programação na ciência de dados, e o MongoDB, com seu esquema flexível e dinâmico, são ótimos juntos para criar aplicativos web modernos, APIs JSON e processadores de dados, entre muitos outros recursos. O MongoDB tem um driver Python nativo e uma equipe de engenheiros dedicada ao funcionamento integrado entre o MongoDB e a Python.

Sumário
O que é Python?

Python, o canivete suíço das linguagens tipadas dinamicamente atuais, tem suporte abrangente para tarefas comuns de manipulação e processamento de dados, o que a torna uma das melhores linguagens de programação para ciência de dados e desenvolvimento Web. O dicionário nativo do Python e os tipos de dados de lista fazem com que ele fique atrás apenas do JavaScript na manipulação de documentos JSON, e seja adequado para trabalhar com BSON. PyMongo, a biblioteca de driver padrão do MongoDB para Python, é fácil de usar e oferece uma API intuitiva para acessar bancos de dados, coleções e documentos.

Os objetos recuperados do MongoDB por meio do PyMongo são compatíveis com dicionários e listas, de modo que podemos facilmente manipulá-los, iterá-los e imprimi-los.

Como o MongoDB armazena dados

O MongoDB armazena dados em documentos do tipo JSON:

Dicionários Python se parecem com:

Continue lendo para obter uma visão geral de como aproveitar todo o potencial desta poderosa combinação de recursos.

Pré-requisitos

Baixe e instale o Python em sua máquina. Para confirmar se a instalação está correta, digite python --version na linha de comando do seu terminal. Você verá algo semelhante a:

Você pode seguir os exemplos do python MongoDB neste tutorial mesmo se você for iniciante no Python.

Recomendamos configurar um cluster de nível gratuito do MongoDB Atlas para este tutorial.
Crie seu cluster de nível gratuito agora
Saiba mais sobre o Atlas
Conectar o Python e o MongoDB Atlas

O PyMongo tem um conjunto de pacotes para a interação entre o Python e o MongoDB. Para o tutorial a seguir, comece criando um ambiente virtual, e ative-o.

Agora que você está em seu ambiente virtual, instale o PyMongo. Em seu terminal, digite:

Agora, podemos usar o PyMongo como uma biblioteca Python MongoDB em nosso código com uma instrução de importação.

Como criar um banco de dados do MongoDB no Python

A primeira etapa para conectar o Python ao Atlas é criar um cluster. Siga as instruções na documentação para aprender a criar e configurar seu cluster.

Em seguida, crie um arquivo chamado pymongo_get_database.py em qualquer pasta para escrever o código do PyMongo. Você pode usar qualquer editor de texto básico, como o Visual Studio Code.

Para criar o cliente MongoDB, adicione o seguinte:

Para criar um MongoClient, você precisará de uma string de conexão para seu banco de dados. Se você estiver usando o Atlas, siga as etapas da documentação para obter essa string de conexão. Use connection_string para criar o mongoclient e obter a conexão do banco de dados MongoDB. Altere o nome de usuário, senha e nome do cluster.

Neste tutorial python mongodb, criaremos uma lista de compras e adicionaremos alguns itens. Para tal, criamos um banco de dados user_shopping_list.

O MongoDB não cria um banco de dados até que você tenha collections e documentos nele. Portanto, vamos criar uma collection agora.

Como criar uma collection no Python

Para criar uma collection, passe o nome da collection para o banco de dados. Em um novo arquivo chamado pymongo_test_insert.py, adicione o seguinte código.

Isso cria uma collection chamada user_1_items no banco de dados user_shopping_list.

Como inserir documentos no Python

Para inserir vários documentos de uma só vez, use o método insert_many() do pymongo.

Vamos inserir um terceiro documento sem especificar o campo _id. Desta vez, vamos adicionar um campo do tipo de dados 'data'. Para adicionar a data usando PyMongo, use o pacote Python dateutil.

Primeiro, instale o pacote usando o seguinte comando:

Adicione o seguinte ao pymongo_test_insert.py:

Usamos o método insert_one() para inserir um único documento.

Abra a linha de comando e navegue até a pasta onde você salvou pymongo_test_insert.py.

Execute o arquivo usando o comando:

Vamos conectar à interface de usuário do MongoDB Atlas e ver o que temos até agora.

Faça login no seu Atlas cluster e clique no botão collections.

No lado esquerdo, você verá o banco de dados e o nome da collection que criamos. Ao clicar no nome da collection, você também verá os dados:

visualização do banco de dados e nome da collection
visualização de dados ao clicar

O campo _id é do tipo ObjectId por padrão. Se não especificarmos o campo _id, o MongoDB o gerará. Nem todos os campos presentes em um documento estão presentes em outros. Mas o MongoDB não impede você de inserir dados — essa é a essência de um banco de dados sem esquema.

Se inserirmos item_3 novamente, o MongoDB inserirá um novo documento, com um novo valor de _id. No entanto, as duas primeiras inserções gerarão um erro devido ao campo _id, o identificador exclusivo.

Como fazer queries no Python

Vamos visualizar todos os documentos juntos usando find(). Para tal, criaremos um arquivo separado pymongo_test_query.py:

para o item em item_details: # Isso não gera um resultado muito legível print(item)

python pymongotestquery.py ```

Obtemos a lista de objeto de dicionário como resultado:

lista de dicionário

Podemos visualizar os dados, mas o formato não é muito legível. Portanto, vamos imprimir os nomes dos itens e suas categorias ao substituir a linha print pelo seguinte:

Embora o MongoDB consiga obter todos os dados, vemos um 'KeyError' Python no terceiro documento.

Python KeyError

Para gerenciar erros de dados ausentes no Python, use pandas.DataFrames. DataFrames são estruturas de dados 2D usadas para tarefas de processamento de dados. O método find() pymongo retorna objetos de dicionário que podem ser convertidos em um dataframe em uma única linha de código.

Instale a biblioteca pandas como:

Agora importe a biblioteca pandas adicionando a seguinte linha no topo do arquivo:

E substitua o código no loop pelo seguinte para gerenciar KeyError em uma etapa:

O os erros são substituídos por NaN e NaT para os valores ausentes.

NaN e NaT para os valores ausentes.
Como criar índices no Python MongoDB

O número de documentos e collections em um banco de dados do mundo real aumenta constantemente. Em uma collection grande, pode levar bastante tempo para pesquisar documentos específicos, por exemplo, documentos com “farinha de trigo” entre seus ingredientes. Os índices tornam a pesquisa de banco de dados mais rápida e eficiente e reduzem o custo de consultar em operações de classificação, contagem e correspondência.

O MongoDB define índices em nível de collection.

Para deixar o índice mais prático, adicione mais documentos à nossa collection. Use o método insert_many() para inserir vários documentos de uma só vez. Para obter documentos de amostra, copie o código do Github e execute python pymongo_test_insert_more_items.py em seu terminal.

Por exemplo, queremos os itens que pertencem à categoria 'comida':

Para executar a consulta acima, o MongoDB precisa verificar todos os documentos. Para verificar isso, baixe o Compass. Conecte-se ao seu cluster usando a string de conexão. Abra a collection e acesse a guia "Explicar plano". Em 'filtro', forneça os critérios acima e veja os resultados:

Consultar resultados sem índice

Observe que a consulta verifica 14 documentos para obter cinco resultados.

Vamos criar um único índice no campo 'categoria'. Em um novo arquivo chamado pymongo_index.py, adicione o seguinte código.

Explique o mesmo filtro novamente na UI do Compass:

Consultar resultados com índice

Desta vez, somente cinco documentos são verificados por causa do índice de categoria. Não há uma diferença significativa no tempo de execução devido ao número reduzido de documentos. Entretanto, há uma grande redução no número de documentos verificados para a consulta. Os índices também ajudam na otimização de desempenho para agregações. As agregações estão fora do escopo deste tutorial, mas veja aqui uma visão geral.

Conclusão

Neste tutorial Python MongoDB, aprendemos os fundamentos do PyMongo e executamos operações básicas de banco de dados. Para aprofundar-se no assunto, tente usar PyMongo para executar operações CRUD com dados de negócios. Se você não trabalhou junto com este tutorial, comece agora instalando o MongoDB Atlas gratuitamente. Há também um curso disponível sobre este tópico específico na MongoDB University.

Pronto para começar?

Crie um novo cluster ou migre para o MongoDB Atlas com tempo zero de inatividade e conecte-se ao Python hoje mesmo.
Experimente agora mesmo

Perguntas frequentes