O objetivo deste tutorial de programação de banco de dados Python é fornecer uma introdução suave ao uso de um banco de dados NoSQL como um armazenamento de dados para aplicativos Python. O público-alvo são desenvolvedores de nível iniciante ou desenvolvedores de nível intermediário que estão familiarizados com o uso de bancos de dados orientados a SQL, como Oracle, SQL Server ou MySQL. As demonstrações neste artigo serão paralelas às demonstrações usadas em outros artigos de programação do Banco de Dados SQL envolvendo Python, como Python Database Programming with SQL Express for Beginners e, da mesma forma, usarão o Python 3.
O que é NoSQL?
A popularidade do Python continua a crescer em popularidade em parte devido à facilidade com que ele pode trabalhar com novas tecnologias. Uma dessas “novas” tecnologias é o uso de bancos de dados “NoSQL”. Uma das características mais atraentes desses tipos de banco de dados é o fato de que, como o nome indica, geralmente não há linguagem de consulta adicional, como uma das aparentemente muitas variantes do SQL, que deve ser aprendida para trabalhar com o banco de dados. do ponto de vista programático. Isso facilita muito o desenvolvimento de aplicativos porque as estruturas de dados nativas da linguagem de programação e sua sintaxe são a “linguagem de consulta” de fato, desde que os módulos apropriados sejam adicionados ao ambiente de desenvolvimento.
Bancos de dados NoSQL, além de principalmente não usando uma linguagem de consulta, também estrutura os dados internamente de uma maneira significativamente diferente dos bancos de dados SQL. Um desenvolvedor mais acostumado ao paradigma de programação SQL deve adaptar seu pensamento para corresponder à forma como o NoSQL faz negócios. Indo mais além, o design dos servidores de banco de dados NoSQL compartilha a mesma dissimilaridade. Os servidores de banco de dados NoSQL são mais focados em velocidade e escalabilidade com “consistência eventual”, em oposição aos servidores de banco de dados SQL que são mais focados em consistência imediata.
O que é MongoDB?
MongoDB é um dos muitos bancos de dados “NoSQL”. Assim como o MariaDB, ele usa seu próprio sistema de nome de usuário e senha para gerenciamento de acesso. O MongoDB, além de oferecer software de servidor para download de custo zero, também oferece uma opção introdutória baseada em nuvem de custo zero (por meio de seu Atlas oferta) que reduz a necessidade de baixar e configurar uma instância. As demonstrações neste tutorial de programação de banco de dados usarão a instância gratuita hospedada na nuvem do MongoDB.
Como é o caso do Python e de qualquer servidor de banco de dados, um módulo de driver de banco de dados adicional, chamado PyMongo , é necessário para que o Python se comunique com o servidor MongoDB e quaisquer bancos de dados contidos nele. Além disso, como qualquer servidor de banco de dados, o MongoDB fornece uma ferramenta de gerenciamento complementar chamada MongoDB Shell . As demonstrações neste artigo usarão um banco de dados MongoDB criado com essa ferramenta. Observe que o MongoDB Shell é uma das muitas ferramentas de gerenciamento que existem para o MongoDB.
- Download do servidor da comunidade MongoDB
- Oferta introdutória baseada em nuvem de custo zero do MongoDB
- Download do Shell do MongoDB
Observe que os links postados estavam ativos no momento em que este artigo foi escrito. Se os links não estiverem mais ativos, esses produtos podem ser baixados por meio do mecanismo de pesquisa preferido.
Como configurar o MongoDB para desenvolvimento de software
A Oferta introdutória baseada em nuvem de custo zero do MongoDB configuração é inteiramente baseada na web. Ele pode ser convenientemente vinculado à conta do Google de uma pessoa para fins de logon único. Basta ter em mente as seguintes advertências:
- Escolha um serviço de hospedagem de dados fisicamente próximo. O serviço de hospedagem mostrado neste artigo que fica na Virgínia pode não ser o ideal para quem está longe de lá.
- A senha usada para conectar um aplicativo ao servidor de banco de dados deve ser salva com segurança, pois não pode ser recuperada se for perdida. Ele só pode ser redefinido.
- O nome do cluster, uma vez definido, não pode ser alterado. As demonstrações neste artigo usarão um cluster chamado Cluster0 .
- Certifique-se de que qualquer endereço IP do qual qualquer aplicativo, incluindo o MongoDB Shell, esteja configurado nas configurações de segurança.
- O MongoDB Shell pode não ter um programa de instalação. Certifique-se sempre de incluir o caminho para a pasta que contém este aplicativo no caminho do sistema operacional.
Como se conectar ao servidor de banco de dados MongoDB
Ao configurar com sucesso o cluster MongoDB baseado em nuvem, será necessário observar a string de conexão específica usada para se conectar a ele. As strings abaixo também podem ser recuperadas fazendo login no MongoDB Atlas Site e clicando no botão Conectar botão:
Figura 1 – o Painel do MongoDB Atlas com o botão Conectar destacado
Observe que configurações como nome de usuário e senha do banco de dados e intervalos de IP permitidos para conexão podem ser definidos nos links Acesso ao banco de dados e Acesso à rede, respectivamente.
Abaixo estão dois exemplos de conexão. O primeiro é para o MongoDB Shell.
MongoDB:conectando a partir da linha de comando
Abrindo um Prompt de Comando do Windows é explicado em Programação de banco de dados Python com SQL Express para iniciantes em Abrindo janelas de prompt de comando cabeçalho.
Figura 2 – Conectando-se via linha de comando ao MongoDB Shell
Observe que o comando para abrir o MongoDB Shell varia de acordo com o sistema operacional. O nome do cluster pode variar e os parâmetros destacados no comando precisarão ser alterados para os detalhes da configuração do MongoDB baseada em nuvem. No Windows, esse comando é chamado mongosh . Observe que o nome do banco de dados RazorDemo está incluído abaixo, pois esse é o banco de dados que será usado nas demonstrações deste tutorial de programação. O comando também aceita um parâmetro adicional para a senha conforme mostrado abaixo:
Figura 3 – Autenticação com a senha na linha de comando.
Observe que, embora seja conveniente para fins de desenvolvimento usar a senha na linha de comando, em vez de digitá-la a cada vez, lembre-se de que a senha aparece no histórico de comandos executados anteriormente. Esta opção não deve ser usada em ambientes de desenvolvimento onde outros usuários podem acessar o histórico de comandos anteriores.
Além disso, espero que ninguém tenha pensado que eu usaria 123456 como senha, certo?
Figura 4 – Apenas verificando 🙂
Observe que em ambos os exemplos acima, o ^ caractere é usado como um símbolo de continuação de linha no prompt de comando do Windows.
Conectando o MongoDB do Python
A string a seguir, com as alterações adequadas, pode ser colocada no código Python para uso pelo PyMongo motorista:
Figura 5 – Conectando via Python e PyMongo
Na string de conexão acima, o nome do banco de dados RazorDemo será usado no lugar de myFirstDatabase .
Como criar um banco de dados no MongoDB
O MongoDB não “cria” um banco de dados até que esse banco de dados seja “usado” e os dados sejam realmente gravados nele. A imagem abaixo mostra uma conexão bem-sucedida com o serviço MongoDB Atlas usando o RazorDemo banco de dados, mas não existe tal banco de dados listado ao usar o show dbs comando:
Figura 6 – Nenhum banco de dados RazorDemo… ainda
Como “usar” um banco de dados no MongoDB
No MongoDB, um banco de dados é “usado” sempre que estiver conectado diretamente usando a string de consulta ou quando o nome do banco de dados for o argumento do use comando. Observe como invocar este comando no banco de dados selecionado atualmente exibe uma mensagem diferente de alternar para esse banco de dados:
Figura 7 – Alternando entre bancos de dados
Para realmente “criar” o banco de dados, alguns dados devem ser inseridos. A Demo do Razor O banco de dados dos artigos anteriores, Introdução às páginas Razor usando C# e programação de banco de dados Python com SQL Express para iniciantes, usa duas tabelas, a saber, Artistas e Álbuns . No MongoDB, o que um banco de dados orientado a SQL chama de tabela é chamado de coleção . Criando duas entradas em coleções chamadas Artistas e Álbuns , respectivamente, criarão tanto o banco de dados quanto as coleções.
Cada entrada em uma coleção é chamada de documento . Isso é análogo a um registro em uma tabela de banco de dados orientada a SQL.
Observe, assim como é importante para um aplicativo principal salvar a criar tabela instruções em um banco de dados orientado a SQL, o mesmo raciocínio também se aplicará ao banco de dados inicial e aos comandos de criação de coleção para um banco de dados MongoDB para um aplicativo principal.
Os comandos abaixo criarão os Artistas coleção inserindo um único documento nela e, em seguida, consulte os Artistas coleção para verificar o sucesso da operação de inserção. Observe como a operação de inserção usa a sintaxe JSON:
db.Artists.insertOne({artist_name: "Skeered Tigon Stripes"}) db.Artists.find({}) Listing 1 - Inserting a new document.
Esses comandos fornecem a seguinte saída no MongoDB Shell:
Figura 8 – Criando a coleção Artistas
O _id mostrado acima foi criado automaticamente e é exclusivo dentro da coleção, semelhante a um valor de chave primária gerado automaticamente em um banco de dados orientado a SQL.
Observe que o MongoDB Shell pode relatar que o .insert() comando está obsoleto. Este exemplo usa o .insertOne() command, pois essa é uma das alternativas fornecidas.
Sintaxe semelhante pode ser usada para criar os Álbuns coleção:
db.Albums.insertOne({artist_name: "Skeered Tigon Stripes",album_name: "Genetically Engineered Critters"}) db.Albums.find({}) Listing 2 - Inserting another new document
Figura 9 – Criando a coleção de álbuns
Nota, o aviso relacionado ao caniuse-lite aparece ao pressionar o botão Enter key antes de completar o comando para criar um documento. O MongoDB Shell permitirá que um comando seja dividido em várias linhas antes de completá-lo. Este aviso indica que o MongoDB Shell pode estar usando um driver desatualizado e precisará ser atualizado em uma versão futura.
Não parece interromper o processo de criação do documento.
Mais alguns documentos para os Álbuns coleção:
db.Albums.insertOne({ artist_name: "Skeered Tigon Stripes", album_name: "Volume Control: No" }) db.Albums.insertOne({ artist_name: "Skeered Tigon Stripes", album_name: "Verse Vica }) db.Albums.insertOne({ artist_name: "Skeered Tigon Stripes", album_name: "Rotten to the Core" }) db.Albums.find({}) Listing 3 - Additional documents for the Albums collection
Figura 10 – Novos documentos adicionais do álbum
SEM restrições de chave estrangeira
Como o MongoDB não é um sistema de gerenciamento de banco de dados relacional, ele não fornece um mecanismo para impor os tipos de restrições de chave estrangeira usadas em tabelas de banco de dados orientadas a SQL entre coleções. Ele espera que o aplicativo mantenha e imponha tais relações. No contexto do MongoDB Shell, cabe ao desenvolvedor digitar corretamente os valores para garantir que um relacionamento entre os documentos nas coleções possa ser inferido.
O .deleteOne() comando pode ser usado para excluir documentos inseridos incorretamente:
db.Albums.deleteOne({ artist_name: "Skeered Tigon Stripes", album_name: "I Typed the Album Name Wrong" }) Listing 4 - Deleting a document.
Observe que, se um documento não corresponder aos parâmetros inseridos, nenhum erro será exibido, em vez disso, a mensagem de confirmação mostrará que nada foi excluído:
Figura 11 – Mensagem de confirmação mostrando nenhum documento excluído
O .deleteMany() O comando pode ser usado para excluir vários registros que correspondem a um critério JSON. O comando abaixo exclui todos os documentos nas coleções de álbuns em que o artist_name valor não é Skeered Tigon Stripes :
db.Albums.deleteMany({artist_name: {$ne : "Skeered Tigon Stripes" }}) Listing 5 - Deleting multiple documents based on criteria.
Figura 12 – Excluindo vários registros
Considerações finais sobre programação de banco de dados Python com MongoDB
Agora que aprendemos como nos conectar a um banco de dados MongoDB e como criar uma versão NO SQL de uma tabela com “registros”, podemos passar a trabalhar com scripts Python para inserir dados em nosso banco de dados MongoDB. Continuaremos essa discussão na segunda – e última – parte deste tutorial de programação de banco de dados Python:Desenvolvimento de banco de dados Python e MongoDB.