Como acessar o MongoDB e gerenciar dados com Python

Como acessar o MongoDB e gerenciar dados com Python

A conexão e a realização de ações, como criação, leitura, atualização e exclusão (o famoso CRUD), são temas fundamentais na vida dos desenvolvedores. Muitos softwares se conectam, de alguma forma, com bancos de dados, exigindo conhecimento sobre estas operações.

Neste artigo, apresentaremos mais informações sobre o MongoDB, um banco de dados não relacional, como se conectar a ele e realizar estes procedimentos utilizando a linguagem de programação Python.


Banco de dados

Christopher J. Date, escritor do livro Introdução a Sistemas de Bancos de Dados, define banco de dados como “uma coleção de dados persistentes, usada pelos sistemas de aplicação de uma determinada empresa”.

Podemos exemplificar este conceito com algo bem cotidiano: imagine que você vai a uma loja de eletrodomésticos. Ao escolher o produto, o atendente diz que você precisa informar uma série de dados para que ele preencha um cadastro no sistema. Após finalizado o preenchimento, ele clica em um botão na tela chamado “salvar”. Para onde foram estas informações? Quando o profissional digita seu nome ou CPF, de onde são buscadas esses elementos para mostrar na tela? Ao excluir os dados de um cliente, como isso acontece? De onde eles são removidos?

Bom, podemos inferir que seus dados foram salvos em um banco de dados, que armazena e possibilita uma série de operações, tais como inserção, atualização, leitura e remoção das informações.

Existem dois tipos de bancos: os relacionais e os não-relacionais. Os relacionais, tais como mySQL e SQL Server, armazenam os dados em uma ou mais tabelas, de colunas e linhas, que se relacionam de forma lógica. Os não-relacionais, conhecidos como NoSQL, tais como MongoDB e DynamoDB, não possuem a mesma estrutura, possuindo um formato muito mais flexível de armazenamento de dados. Este é o caso que iremos focar neste artigo, mais especificamente na forma com que é possível se conectar ao MongoDB utilizando a linguagem Python, muito conhecida no universo da automatização.


MongoDB

O MongoDB é um banco de dados de documentos que trabalha com o formato JSON. Possui uma estrutura flexível, por ser um banco não-relacional, que pode ser alterada ao longo do tempo. A solução possui planos pagos, mas você pode utilizar a opção “compartilhado”, que é gratuita, para desenvolver os passos que serão descritos neste artigo.

O que é um arquivo .json?

Um documento JavaScript Object Notation (JSON) é formatado como texto contendo em sua estrutura pares de chaves e valores, sendo as chaves os identificadores e os valores os elementos correspondentes às chaves. Os valores podem ser do tipo string, boolean, array, object, number e null.

Python

Python é uma linguagem de programação orientada a objetos muito utilizada pelos desenvolvedores. Segundo o site Python Brasil, ela permite construir sistemas web, trabalhar com análise de dados, inteligência artificial e machine learning, construir aplicativos e sistemas desktop. Para este projeto, utilizaremos a versão 3.11.2.

Dica: PyCharm

Para desenvolver este tutorial, utilizamos o PyCharm, que é um dos editores de código mais utilizados para trabalhar com Python. É possível fazer o download da IDE neste link.


Instalando Python

Para baixar o Python, acesse este link. Utilizamos a versão de Windows para realizar este tutorial. Após o download, clique no arquivo e faça a instalação.

Criando um ambiente virtual para desenvolver

Com o modo virtualenv, crie um ambiente virtual para instalar os pacotes e desenvolver a aplicação. O objetivo desta medida é isolar o ambiente e empacotar todas as dependências do nosso projeto a fim de não instalar nenhum pacote de forma global no sistema operacional, mas apenas para utilização em um projeto específico.

Para instalar uma virtualenv, abra o terminal e digite: pip install virtualenv. Após, crie o ambiente virtual com o comando: virtualenv nome_da_<~virtualenv~>. Depois da criação, realize a ativação com o comando nome_da_virtualenv/Scripts/Activate. Lembrando que estes comandos são válidos para Windows, que é o sistema operacional utilizado para a criação deste tutorial. Para desativar após finalizar a edição do seu projeto, utilize o comando deactivate.

Instalando PyMongo

O PyMongo é um pacote para trabalhar com o MongoDB e você realizará a instalação utilizando o gerenciador de pacotes PIP. Aperte Windows + R, digite pip install pymongo e aperte enter.

E se der erro no PIP?

Por padrão, o PIP já vem instalado no Python, mas, se acontecer o erro “pip' não é reconhecido como um comando interno ou externo, um programa operável ou um arquivo em lotes”, você deve seguir dois passos:

1. Verifique se o PIP está instalado: navegue até a pasta onde o Python está instalado e acesse a pasta Scripts. Verifique se o executável pip.exe está nesta pasta.

2. Se não estiver na pasta, siga estes comandos para baixar e instalar o gerenciador.

3. Se o PIP estiver na pasta, passamos para o segundo passo: vamos inserir a pasta nas variáveis do ambiente. Para isto, siga estes passos: acesse o Explorador de Arquivos e aperte o botão direito do mouse no Este computador. Acesse a opção Configurações avançadas do sistema, clique na opção Avançado e depois em Variáveis de ambiente. Após, selecione a variável Path e clique em Editar. Clique em Novo e adicione o caminho da pasta Scripts. Reinicie o prompt de comando.

Criando um projeto

Abra a pasta do projeto no PyCharm e crie um arquivo Python. Neste projeto, criamos o app.py. Após, importe o PyMongo, conforme o código import pymongo.

Criando um cluster e um banco de dados diretamente no MongoDB

No mundo profissional, muitas vezes, as bases de dados já estarão em funcionamento e você precisará realizar integrações de aplicações com estes ambientes. Dessa forma, este tutorial é focado na conexão com um banco de dados já existente e, por isso, criamos um cluster diretamente no MongoDB Atlas apenas para embasar os exemplos apresentados nos próximos tópicos.

Para acompanhar este tutorial, crie uma conta na plataforma, clique em create para criar o seu cluster e selecione uma das opções. Para facilitar a visualização das informações, optamos por fazer a conexão pelo MongoDB Compass, que é a interface gráfica do MongoDB. Para baixá-la, clique aqui e, após, faça a instalação.

Com o cluster criado, crie o banco de dados com o nome e a senha que desejar. Após, crie uma collection, que será o local onde de fato você irá armazenar seus documentos JSON. Guarde estas informações em um local seguro.


Conectando a um banco de dados

Após conectado ao seu cluster pelo MongoDB Compass, clique nos três pontinhos na lateral direita e copie a connection string:


Agora, acesse a instância do MongoDB com o MongoClient. Para visualizar se a conexão deu certo e você está se conectando ao banco de dados, faça um print conforme o código abaixo e clique na setinha verde chamada Run.

import pymongo

from pymongo import MongoClient

cliente = pymongo.MongoClient("insira_a_connect_string_aqui")

database = cliente['insira_o_nome_do_banco_de_dados_aqui']

print(database)


Para acessar sua collection e visualizar se está tudo certo, insira o código abaixo e clique em Run.

collection = database['insira_o_nome_da_coleção_aqui']

print(database.list_collection_names())

Inserindo registros no seu banco de dados

Inserindo um novo registro

Para inserir um documento na coleção, utilize o método insert_one(), conforme o exemplo abaixo:

novoProduto = {

"nome": "ultra sport",

"categoria": "tenis de corrida",

"tamanho": "38",

"cor": "azul"

}

inserir_novoProduto = collection.insert_one(produtos)

💡
Para este e os próximos exemplos, utilizaremos uma collection chamada produtos em um banco de dados de uma loja fictícia de artigos esportivo chamado lojadoesporte.


Quando olhamos no MongoDB Compass, nosso registro foi inserido:


Este ID é criado automaticamente, mas pode ser utilizado para identificar o registro.

Inserindo vários registros

Para inserir mais de um registro, você utilizará o método insert_many().

novoProduto = [

{

"nome": "max shoe",

"categoria": "tenis de trekking",

"tamanho": 35,

"cor": "vermelho"

},

{

"nome": "super sandal",

"categoria": "sandalia",

"tamanho": 33,

"cor": "rosa"

},

{

"nome": "pretty shoe",

"categoria": "tenis casual",

"tamanho": 36,

"cor": "branco"

}


]

inserirNovoProduto = collection.insert_many(novoProduto)


Repare que os novos registros foram inseridos abaixo do primeiro.


Consultando os dados inseridos

Consultar todos os dados

Para consultar todos os registros feitos na coleção, utilize o método find() e faça um print na tela para visualizar o retorno:

for items in collection.find():

print(items)

O retorno no terminal do editor será:


Consultar apenas um registro

Para buscar por apenas um registro, você deve utilizar o método find(<~parâmetro~>). Confira no exemplo como ficaria:

for item in collection.find({"nome": "pretty shoe"}):

print(item)

O retorno será:


Realizar uma consulta utilizando expressões regulares

Para consultar, por exemplo, apenas os tênis que iniciam com a letra “p”, o código ficaria:

consulta = {

"nome": {

"$regex": "^p"

}

}

for item in collection.find(consulta):

print(item)

Neste caso, teremos como retorno:

Atualizando registros

Atualizar um registro

Para atualizar um registro, o método a ser utilizado é o update_one(). Ele atualizará o primeiro registro que encontrar com o valor definido na variável consulta.

consulta = {

"nome": "pretty shoe"

}

novoValor = {

"$set":{

"cor": "verde"

}

}

collection.update_one(consulta, novoValor)

Antes:

Depois:


Atualizar vários registros

Com o método update_many(), todos os registros baseados no valor inserido na variável consulta serão atualizados.

consulta = {

"nome": {

"$regex" : "shoe"

}

}

novoValor = {

"$set": {

"nome": "tennis"

}

}

collection.update_many(consulta, novoValor)

Antes:


Depois:

Apagando registros

Apagando um registro

O método delete_one() elimina o primeiro registro referente ao valor armazenado na variável consulta encontrado na collection.

consulta = {

"nome": "super sandal"

}

collection.delete_one(consulta)


Antes:

Depois:


Apagando vários registros

Para apagar mais de um registro, deve-se utilizar o método delete_many().

consulta = {

"nome": "tennis"

}

collection.delete_many(consulta)

Antes:

Depois:


Conclusão

Existe uma infinidade de ações que podem ser realizadas com a linguagem de programação Python, especialmente quando relacionadas a integrações com bancos de dados.

Neste tutorial, você conferiu o passo a passo para a conexão e realização de operações de consulta, inserção, atualização e exclusão de documentos no MongoDB.

Até logo!

💡

As opiniões e comentários expressos neste artigo são de propriedade exclusiva de seu autor e não representam necessariamente o ponto de vista da Revelo.

A Revelo Content Network acolhe todas as raças, etnias, nacionalidades, credos, gêneros, orientações, pontos de vista e ideologias, desde que promovam diversidade, equidade, inclusão e crescimento na carreira dos profissionais de tecnologia.