fbpx
Como manipular banco de dados com Python

Python é uma linguagem poderosa e que vem ganhando cada vez mais espaço no mercado de trabalho e nas grandes empresas. Versátil, ela pode ser aplicada em áreas tão diversas entre si quanto desenvolvimento de jogos, criptomoedas, análise de dados, computação gráfica e automação. Mas você sabia que a grande fama do Python começou dentro da ciência de dados e dos processos de automação? Neste texto, vamos te contar tudo o que você precisa saber para começar a manipular banco de dados com Python.

Vamos lá?

O que são bancos de dados?

Se você leu nosso texto anterior, provavelmente está por dentro de tudo sobre bancos de dados: história, como eles se organizam e os mais usados.

Mas, antes de seguirmos, vamos relembrar as informações mais importantes!

banco de dados com python
Bancos de dados são o núcleo dos sistemas de informação, armazenando e organizando dados de maneira segura e consistente | Imagem por fullvector / Freepik

A definição da Wikipedia diz que bancos de dados são “coleções de dados que se relacionam de forma a criar um sentido”. Esta definição, no entanto, é muito geral e abarca todo e qualquer sistema que reúna dados (a lista telefônica da sua avó, ou o controle de vendas do mercado da equina).

Os bancos de dados que estamos falando são sistemas que armazenam informações de maneira organizada, consistente e protegida. Se no passado as empresas guardavam todas as suas informações de forma física, o surgimento dos computadores possibilitou que esses arquivos fossem digitalizados. Assim surgiram os bancos de dados, que se tornaram o núcleo dos sistemas de informação.

O gerenciamento de toda informação se dá através do Sistema de Gerenciamento de Bancos de Dados (SGBD) que permite que dados sejam acrescentados, excluídos e acessados conforme a necessidade. Portanto, o SGDB é como um software que faz a intermediação entre os dados e o usuário.

Existem dois sistemas principais de organização de bancos de dados: o modelo relacional, com orientação a conjuntos e forma tabular, e o não relacional, para armazenamento de dados mais complexos e aqueles que não podem ser tabulados, como imagens.

A linguagem utilizada pelos bancos de dados tabular é a Structured Query Language, Linguagem de Consulta Estruturada, em português) e a utilizada pelo não-relacional é a NoSQL (Not Only SQL, Não Apenas SQL).

Se você quer saber mais detalhes, não deixe conferir o texto completo aqui!

Por que manipular banco de dados com Python?

Apesar de não possuir acesso a bancos de dados em sua biblioteca nativa, o banco de dados com Python é uma excelente escolha para desenvolver aplicações que necessitam desse serviço. A linguagem permite que você acesse inúmeros gerenciadores, como Mysql, Sqlite, Interbase, Oracle. Para isso basta que você instale no seu computador o gerenciador escolhido e o módulo necessário para transmitir a linguagem ao gerenciador.

Com acesso a inúmeros gerenciadores, como Mysql, Sqlite, Interbase e Oracle, gerenciar banco de dados com Python é uma excelente escolha | Imagem por fullvector / Freepik

Por ser uma linguagem de código aberto e contar com uma grande comunidade de usuários ativos e participativos, o Python possui um grande número de módulos prontos para serem utilizados. Isso faz com quem você economize tempo no desenvolvimento e consiga se concentrar nas especificidades de sua aplicação. Além disso, o Python é uma linguagem fácil de instalar e de programar, com sua sintaxe legível e intuitiva. Uma outra vantagem, está na sua grande portabilidade e versatilidade, o que te dá uma grande liberdade criativa junto com a certeza de encontrar todos os recursos necessários em um único lugar e de maneira simples.

Ainda não programa com Python?

Já é mais que a hora de começar e abrir as portas de carreira de um mercado cada dia mais promissor, com grandes ofertas nas principais gigantes de tecnologia. Nós aqui da ByLearn temos o curso mais completo do mercado: Python completo – de Júnior a Sênior. Conosco você vai ter um aprendizado estruturado e completo, com material didático próprio e a melhor equipe de instrutores, sempre disposta a tirar todas as suas dúvidas.

Quer um gostinho do método ByLearner? Então baixe gratuitamente o nosso e-book Boas Práticas com Python e eleve o nível do seu código!

Boas Práticas com Python

Baixe aqui nosso e-book completo totalmente grátis

Manipulando bancos de dados com Python

Em sua biblioteca padrão, o Python não possui acesso nativo a bancos de dados SQL ou NoSQL, mas disponibiliza uma API modelo para ser seguida, o que torna o acesso a qualquer bando de dados parecido, facilitando o processo.  A DB-API Python (Data-Base API, ou API de Banco de Dados) engloba módulos de bancos de dados como SQLite, Pysqlite, Mysql-Python, etc.

Que tal se eu mostrar para você na prática como integrar um banco de dados com o Python?

Nesse caso, vamos usar o SQLite, devido ao fato dele rodar localmente sem a necessidade de configurar nenhum servidor, o que nos permite testar até mesmo online, através do Repl.it.

Para cada exemplo mostrado aqui nós iremos deixar um link para executar o código direto do seu navegador, assim você pode testar o código até mesmo pelo seu celular 😎.

Importando o pacote do SQLite

Para iniciarmos o desenvolvimento nós vamos precisar importar o pacote sqlite3 para nosso projeto, da seguinte forma:

Conectando ao banco de dados

Agora é só usarmos o método sqlite3.connect() para conectar ao nosso banco, onde entre parâmetros informamos o local do arquivo do nosso banco de dados com Python.

Lembrando que, caso o arquivo não exista, ele será automaticamente criado!

Sendo assim, podemos usar o seguinte código:

O que por fim irá nos dar:

Mas não podemos deixar de fechar nossa conexão após o uso! Para isso, basta executarmos o método close(), da seguinte forma

Portanto, nosso código ficará:

Veja o código em ação clicando aqui.

Adicionando uma camada de segurança

Tudo parece perfeito, não é mesmo?

Simples e curto, como o banco de dados com Python foi feito para ser! Porém quando trabalhamos com banco de dados, várias exceções podem ocorrer e é bom tratarmos delas, a maneira mais recomendada é a usando um try … except e utilizar o sqlite.Error para identificarmos o problema, como por exemplo:

Veja o código em ação clicando aqui.

Para ficar ainda mais organizado, podemos ter uma função para abrir a conexão e uma para fechá-la, caso esteja ativa. Dessa forma, fica mais fácil organizarmos os códigos que acontecerão no período em que a conexão está aberta, como por exemplo:

Veja o código em ação clicando aqui.

Executando Comandos SQL

Para executarmos um comando SQL nós vamos precisar de um cursor, que é uma abstração (dispinível no Python DB-API 2.0) para manipular e trabalhar com o seu banco de dados com Python. É através dele que iremos executar comandos SQL e recuperar informações no banco (como os resultados de um Select, por exemplo).

Para criar um cursor podemos executar o médoto cursor() da nossa conexão, da seguinte forma:

Já para executar um comando SQL podemos utilizar o método execute() do nosso cursor e enviar o comando SQL por parâmetro (sendo ele uma string), como por exemplo:

Criando Tabelas

Dessa forma, para criarmos uma tabela nova, que no caso será a tabela aluno, que guardará o nome e a nota de um aluno temos o seguinte:

Veja o código em ação clicando aqui.

Modificando Tabelas

Assim como executamos um comando SQL para modificar o banco e criar uma nova tabela, nós podemos trabalhar diretamente com as tabelas, seja inserindo novos dados (através do Insert Into), atualizar os dados (através do Update) ou até mesmo removê-los (através do DELETE).

Porém, assim como os demais bancos de dados, nós precisamos salvar essas alterações e para isso executamos o método commit() da nossa conexão, da seguinte maneira:

Para inserirmos dados na nossa tabela alunos, teremos o seguinte código:

Veja esse código em ação clicando aqui.

Buscando dados da tabela

Podemos também executar ações de buscas, como um Select na tabela alunos.

Como foi dito anteriormente, o cursor também armazena os dados retornados de um comando SQL, assim, usaremos ele para termos o resultado da nossa busca.

Para isso podemos usar os métodos fetchonce(), para retornar só uma linha encontrada.

Já o fetchall() para retornar todas. Como queremos buscar todos os alunos, usaremos este último método, como no exemplo abaixo:

Um código para buscar e mostrar todos os alunos e suas notas pode ser o seguinte:

Veja esse código em ação clicando aqui.

Código Final

Juntando tudo o que foi falado anteriormente nós teremos um código que faz a conexão com um banco, criando-o se não existir, cria uma tabela (caso não exista), insere valores nesta tabela e, por fim, recupera os valores e mostra o que foi retornado.

Executando da forma segura, conforme aprendemos acima, teremos um código da seguinte forma:

Veja esse código clicando aqui.

Viu só como foi fácil? Em poucos minutos aprendemos a usar o SQLite (banco de dados) com Python!

Conheça algumas bibliotecas para manipular bancos de dados com Python

SQLite

É um projeto em código aberto, leve e prático. É rápido, simples e não depende de servidor porque funciona com uma base de dados embutida, rodando como parte da aplicação. No entanto, ele não é multiusuário e por isso não funciona em rede, não sendo adequado para projetos grandes de banco de dados com Python.

 MySQL

Também é um projeto de código aberto, porém pertence à Oracle. É fácil de instalar e bastante rápido e eficiente, é o bando de dados mais utilizados para projetos na internet. Requer uma arquitetura de cliente e servidor.

Oracle

É provavelmente o banco de dados relacional mais utilizado do mercado. Suas principais vantagens são sua segurança e capacidade de gerenciar um grande volume de dados. Roda no Windows e no Linux, no entanto, é pesado e exige um hardware poderoso, além de ser um software privado, com um custo alto de utilização para trabalhar com banco de dados com Python..

Bônus: alguns ORMs para usar bancos de dados com Python

ORM (Mapeamento objeto-relacional ou ORM,do inglês: Object-Relational Mapping) é uma técnica que abstraí gerencia os dados de bancos de dados relacionais de maneira que você não precise escrever comandos em linguagem SQL. Assim, as tabelas são representadas através de classes e os registros de cada tabela são representados como ocorrências de cada uma das classes.  

Django ORM

É a interface usada pelo Django para fornecer acesso ao banco de dados. Oferece uma API de acesso automático a banco de dados e funciona baseado na ideia de modelos, facilitando a manipulação dos dados. Para saber mais, confira a documentação oficial aqui.

PonyORM

Aqui o diferencial é a “tradução” automática da linguagem SQL em sintaxe do Python. Outra vantagem é um editor de esquema gráfico. É compatível com Python a partir de sua versão 2.6 e pode ser facilmente conectado ao SQLite, MySQL, PostgreSQL e Oracle.

SQLObject

Sua grande vantagem é a versatilidade. É compatível com uma grande variedade de bancos de dados, desde o mais comuns, como MySQL e SQLite, até alguns mais obscuros, como SyBase e SAP DB. Pode ser usado com qualquer versão de posterior ao Python 2.6.


Quer fazer uma sugestão para os próximos posts? Dizer o que achou desse post a respeito de banco de dados com Python? Não deixe de nos contar tudo nos comentários!

E para não perder nada do nosso conteúdo, não deixe de nos seguir nas redes sociais e assinar a nossa newslettter.

Até a próxima!

Tags: | |

Newsletter

Se inscreva na nossa Newsletter para receber as principais novidades da ByLearn

Não enviamos spam. Seu e-mail está 100% seguro!

Solicitar exportação de dados

Utilize este formulário para solicitar a exportação de seus dados.

Solicitar remoção de dados

Utilize este formulário para solicitar a remoção de seus dados.