Uma das maiores necessidades dos sistemas é o armazenamento de informações em um banco de dados. Sistemas confeccionados com a linguagem Python não é diferente.
Criamos esse post com o objetivo de oferecer um tutorial definitivo para você programador que necessita utilizar o banco de dados MySQL para armazenar informações.
Utilizaremos a biblioteca pymysql para trabalhar com o MySQL.
Criando o banco de dados
Como exemplo, iremos criar um banco de dados para gravar informações sobre carros em uma garagem.
Primeiramente, iremos criar um banco de dados:
CREATE DATABASE garagem;
Agora iremos criar uma tabela para cadastrar os carros:
CREATE TABLE carros ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL, placa VARCHAR(10) NOT NULL, nome_dono VARCHAR(20) NOT NULL );
Pronto. Já temos um banco de dados com uma tabela pronta para receber os dados.
Inserindo dados
Vamos inserir um carro no banco de dados. Veja como fazemos:
# Importamos a biblioteca: import pymysql # Abrimos uma conexão com o banco de dados: conexao = pymysql.connect(db='garagem', user='root', passwd='') # Cria um cursor: cursor = conexao.cursor() # Executa o comando: cursor.execute("INSERT INTO carros (placa, nome_dono) VALUES ('ABC-1234', 'Joao')") # Efetua um commit no banco de dados. # Por padrão, não é efetuado commit automaticamente. Você deve commitar para salvar # suas alterações. conexao.commit() # Finaliza a conexão conexao.close()
Veja como ficou no banco de dados:
Atualizando dados
O dono do carro mudou. E agora? Atualizamos no banco de dados. Veja como ficou:
# Importamos a biblioteca: import pymysql # Abrimos uma conexão com o banco de dados: conexao = pymysql.connect(db='garagem', user='root', passwd='') # Cria um cursor: cursor = conexao.cursor() # Executa o comando: cursor.execute("UPDATE carros SET nome_dono = 'Joaquim' WHERE placa = 'ABC-1234'") # Efetua um commit no banco de dados. # Por padrão, não é efetuado commit automaticamente. Você deve commitar para salvar # suas alterações. conexao.commit() # Finaliza a conexão conexao.close()
Veja a alteração no banco de dados:
Buscando dados
Aconteceu um acidente na garagem. O veículo de placa ABC-1234 bateu no fusqueti da dona Maria. Quem é o dono dele? É só fazer um select no banco de dados. Veja como fica o código:
# Importamos a biblioteca: import pymysql # Abrimos uma conexão com o banco de dados: conexao = pymysql.connect(db='garagem', user='root', passwd='') # Cria um cursor: cursor = conexao.cursor() # Executa o comando: cursor.execute("SELECT nome_dono FROM carros WHERE placa = 'ABC-1234'") # Recupera o resultado: resultado = cursor.fetchall() # Mostra o resultado: print('Dono do carro: ') for linha in resultado : print(linha) # Finaliza a conexão conexao.close()
Veja como ficou o console:
Deletando dados
Com o acidente, vamos banir o Joaquim da garagem. Veja como fazemos:
# Importamos a biblioteca: import pymysql # Abrimos uma conexão com o banco de dados: conexao = pymysql.connect(db='garagem', user='root', passwd='') # Cria um cursor: cursor = conexao.cursor() # Executa o comando: cursor.execute("DELETE FROM carros WHERE placa = 'ABC-1234'") # Efetua um commit no banco de dados. # Por padrão, não é efetuado commit automaticamente. Você deve commitar para salvar # suas alterações. conexao.commit() # Finaliza a conexão conexao.close()
Veja que o Sr. Joaquim não está mais na garagem e está parando o carro na rua:
Tem alguma dúvida? Pergunte nos comentários! Será um prazer respondê-lo.
Comentários
MARLISON
Excelente explicação. Muito obrigado!!!
Hérika Ströngreen
Amei a explicação… Rindo e aprendendo
Rodolfo
Victor, muito boa suas explicações.
Uma dúvida, se eu quiser pegar a tabela inteira que tenha mais de uma linha de registro e guardar em uma variavel, como manipulo essas informações ?
Ex:
tenho uma tabela pessoas_carros, onde tem o cadastro de todas os carros e seus respectivos donos, como pego isso do banco de dados e trago para uma variavel ?
Digo isso pois queria transformar todo esse GET em uma json para enviar com uma API.
Sim, to viajando em um projeto rs
Abs e obrigado.
Victor Vaz
Boa tarde! Tudo bom? Você pode capturar as informações e guardá-las dentro de um array. E você manipula as informações com esse Array.
Tadeu
Não consigo executar o UPDATE. Faço tudo certinho mas o banco de dados não apresenta nenhuma modificação.
Victor Vaz
Boa tarde Tadeu! Tudo bom? Poderia me responder com o seu comando de UPDATE? Posso olhar pra você o que pode estar acontecendo 🙂
Vinicius
Muito boa a explicação, melhor que encontrei até agora !
Eu gostaria de saber como que faria para ter esse retorno em json, pensando que iria conetar essa api a outro serviço.
Filho de Wagner
Excelente explicação. Não estaca conseguindo conectar com o Mysql
Edielson
Excelente explicação, estava com dúvidas em relação a conexão com o mysql e a execução dos comandos dentro do Python, consegui realizar a conexão e realizar as consultas perfeitamente!
Parabéns!!
Victor Vaz
Boa tarde Edielson, tudo bom? Que bom que deu tudo certo! Muito obrigado pelo seu comentário!
Guilherme
Comando “import pymsql” não funcionou nem no Pycharm nem entrando no prompt do python no DOS. Mensagem que aparece é: ModuleNotFoundError: No module named ‘pymysql’. Alguma sugestão? Obrigado
Victor Vaz
Bom dia! Beleza? Então, vc precisa instalar a biblioteca pymsql com o pip.
Alexsandro
Agradeço pela explicação, uma grande abraço.
Álef
Mano, eu T-E A-M-O!
Elrison Silva
Bom dia, como eu faria pra realizar o teste desse CRUD, realizando o unittest?
Victor Vaz
Bom dia irmão, beleza? Cara, infelizmente não saberia te responder.
Bruno Oliveira
Gostei da maneira que foi explicado! Parabéns por compartilhar esse aprendizado de maneira divertida.