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.
17 thoughts on “Python e MySQL: Insert, Update, Delete e Select – Tutorial Definitivo”
MARLISON
(17 maio, 2019 - 3:13)Excelente explicação. Muito obrigado!!!
Hérika Ströngreen
(3 julho, 2019 - 17:42)Amei a explicação… Rindo e aprendendo
Rodolfo
(11 julho, 2019 - 20:24)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
(12 novembro, 2019 - 16:16)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
(15 outubro, 2019 - 2:49)Não consigo executar o UPDATE. Faço tudo certinho mas o banco de dados não apresenta nenhuma modificação.
Victor Vaz
(12 novembro, 2019 - 16:15)Boa tarde Tadeu! Tudo bom? Poderia me responder com o seu comando de UPDATE? Posso olhar pra você o que pode estar acontecendo 🙂
Vinicius
(29 outubro, 2019 - 21:26)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
(8 novembro, 2019 - 0:23)Excelente explicação. Não estaca conseguindo conectar com o Mysql
Edielson
(15 janeiro, 2020 - 21:02)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
(15 janeiro, 2020 - 21:06)Boa tarde Edielson, tudo bom? Que bom que deu tudo certo! Muito obrigado pelo seu comentário!
Guilherme
(16 abril, 2020 - 14:56)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
(26 junho, 2020 - 14:54)Bom dia! Beleza? Então, vc precisa instalar a biblioteca pymsql com o pip.
Alexsandro
(26 junho, 2020 - 2:27)Agradeço pela explicação, uma grande abraço.
Álef
(2 agosto, 2020 - 18:23)Mano, eu T-E A-M-O!
Elrison Silva
(12 agosto, 2020 - 13:36)Bom dia, como eu faria pra realizar o teste desse CRUD, realizando o unittest?
Victor Vaz
(28 setembro, 2020 - 13:49)Bom dia irmão, beleza? Cara, infelizmente não saberia te responder.
Bruno Oliveira
(1 julho, 2021 - 21:16)Gostei da maneira que foi explicado! Parabéns por compartilhar esse aprendizado de maneira divertida.