O objetivo deste post é manipular um banco de dados MySQL com Python.
Criaremos um ambiente virtual usando o VSCode e este ambiente será o interpretador do Python.
🟣 Para instalar o VSCode, clique aqui
🟣 Para instalar a linguagem Python no seu computador, clique aqui
🟣 Para criar um ambiente virtual e um arquivo requirements.txt veja este post clique aqui
Após preparar o ambiente, instale a biblioteca no terminal (novo terminal) VSCode ou no editor que estiver utilizando. Obs: Não é necessário criar um ambiente virtual, não é necessário utilizar o VSCode, você poderá utilizar o IDE que desejar.
◼ Instalar conector mysql
pip install mysql-connector-python
Após instalar o conector,
◼ Instale o MySQL Workbench clicando aqui
◼ Instale o xaamp ou o mysqlserver
O Xaamp é utilizado para conectar no banco sem precisar de senha ou pode instalar o o mysqlserver ao invés do Xaamp clicando aqui
Xaamp, clique aqui
Obs: O Windows defender ou antivírus podem dificultar a conexão.
Ative a conexão MySQL
Clique no + e em connection Name: localhost
✅ Agora sim vamos começar os trabalhos...
Crie um schema clicando no desenho de um banco de dados ou em "Query 1 digite CREATE DATABASE banco; Selecione toda a linha de código e pressione CTRL + ENTER
A partir de agora, ao clicar em SCHEMAS no canto inferior esquerdo, você verá a database que acabamos de criar chamada banco.
2. Para criar as tabelas, apago a mensagem digitada se tiver e digito o código abaixo e executo o código (CTRL + ENTER) e posteriormente, clico no ícone de atualizar (ao lado da palavra schema)
USE banco;
CREATE TABLE pessoa (
id INT PRIMARY KEY AUTO_INCREMENT,
nome VARCHAR(255) NOT NULL,
cpf VARCHAR(11) NOT NULL UNIQUE,
data_nascimento DATE NOT NULL
);
CREATE TABLE conta(
id INT PRIMARY KEY AUTO_INCREMENT,
pessoa_id INT NOT NULL UNIQUE,
saldo NUMERIC(10, 2) NOT NULL DEFAULT 0,
ativo BOOL NOT NULL DEFAULT 1,
FOREIGN KEY (pessoa_id) REFERENCES pessoa(id)
);
3. Para testar digite select * from pessoa
4. Com as tabelas criadas. retornamos ao VSCode
🎯 Testar conexão
Criei o arquivo db.py e o arquivo testedeconexao.py
Em teste de conexão, vamos testar se de fato a conexão com nosso banco de dados esta funcionando:
import mysql.connector as mysql
try:
conexao = mysql.connect(
host='127.0.0.1',
port=3306,
user='root',
password='',
database='banco'
)
print('Conectado com sucesso!')
except Exception as err:
print('Houve um erro ao conectar')
print(err)
Veja que a saída no terminal foi que existe a conexão e ela esta ok.
Caso dê algum erro com você, volte aos passos iniciais e inicie de novo.
🎯 Para criar registro através do arquivo db.py:
import mysql.connector as mysql
try:
conexao = mysql.connect(
host='127.0.0.1',
port=3306,
user='root',
password='',
database='banco'
)
cursor = conexao.cursor()
# Exemplo de inserção de uma nova pessoa
nome = 'João'
cpf = '12345678900'
data_nascimento = '1990-01-01'
# Query SQL para inserir uma nova pessoa
query_inserir_pessoa = "INSERT INTO pessoa (nome, cpf, data_nascimento) VALUES (%s, %s, %s)"
# Dados para inserção
dados_pessoa = (nome, cpf, data_nascimento)
# Executar a query
cursor.execute(query_inserir_pessoa, dados_pessoa)
# Confirmar a operação
conexao.commit()
print('Pessoa inserida com sucesso!')
except Exception as err:
print('Houve um erro ao inserir pessoa')
print(err)
finally:
if conexao.is_connected():
cursor.close()
conexao.close()
print('Conexão encerrada.')
Quando volto no mysql e executo o comando para mostrar todos os itens da tabela pessoa, veja que foi inserido os dados conforme consta no script em Python.
🎯 Para listar os registros da tabela pessoa:
import mysql.connector as mysql
try:
conexao = mysql.connect(
host='127.0.0.1',
port=3306,
user='root',
password='',
database='banco'
)
cursor = conexao.cursor()
# Query SQL para selecionar todos os itens da tabela pessoa
query_selecionar_pessoas = "SELECT * FROM pessoa"
# Executar a query
cursor.execute(query_selecionar_pessoas)
# Obter todos os resultados
pessoas = cursor.fetchall()
# Iterar sobre os resultados e exibir
for pessoa in pessoas:
print("ID:", pessoa[0])
print("Nome:", pessoa[1])
print("CPF:", pessoa[2])
print("Data de Nascimento:", pessoa[3])
print("-----------------------------")
print('Listagem de pessoas concluída!')
except Exception as err:
print('Houve um erro ao listar pessoas')
print(err)
finally:
if conexao.is_connected():
cursor.close()
conexao.close()
print('Conexão encerrada.')
Para listar os registros de uma tabela que o usuário irá inserir o nome:
import mysql.connector as mysql
try:
conexao = mysql.connect(
host='127.0.0.1',
port=3306,
user='root',
password='',
database='banco'
)
cursor = conexao.cursor()
# Solicitar ao usuário o nome da tabela
nome_tabela = input("Digite o nome da tabela: ")
# Query SQL para selecionar todos os itens da tabela digitada pelo usuário
query_selecionar_tabela = "SELECT * FROM {}".format(nome_tabela)
# Executar a query
cursor.execute(query_selecionar_tabela)
# Obter todos os resultados
registros = cursor.fetchall()
# Verificar se existem registros
if registros:
# Iterar sobre os resultados e exibir
for registro in registros:
print(registro)
print('Listagem de registros concluída!')
else:
print('A tabela não possui registros.')
except Exception as err:
print('Houve um erro ao listar registros da tabela')
print(err)
finally:
if conexao.is_connected():
cursor.close()
conexao.close()
print('Conexão encerrada.')
🎯 Para excluir todos os registros de um ID
import mysql.connector as mysql
try:
conexao = mysql.connect(
host='127.0.0.1',
port=3306,
user='root',
password='',
database='banco'
)
cursor = conexao.cursor()
# Solicitar ao usuário o ID que deseja excluir
id_para_excluir = input("Digite o ID que deseja excluir da tabela pessoa: ")
# Query SQL para excluir o registro com o ID fornecido
query_excluir_registro = "DELETE FROM pessoa WHERE id = %s"
# Executar a query
cursor.execute(query_excluir_registro, (id_para_excluir,))
# Confirmar a operação
conexao.commit()
print('Registro com ID', id_para_excluir, 'excluído com sucesso!')
except Exception as err:
print('Houve um erro ao excluir o registro da tabela pessoa')
print(err)
finally:
if conexao.is_connected():
cursor.close()
conexao.close()
print('Conexão encerrada.')
🎯 Para alterar um registro.
Neste exemplo, será alterado o CPF do registro nº 2
import mysql.connector as mysql
try:
conexao = mysql.connect(
host='127.0.0.1',
port=3306,
user='root',
password='',
database='banco'
)
cursor = conexao.cursor()
# Solicitar ao usuário o ID e o novo CPF
id_atualizar = int(input("Digite o ID que deseja atualizar: "))
novo_cpf = input("Digite o novo CPF: ")
# Query SQL para atualizar o CPF do ID especificado
query_atualizar_cpf = "UPDATE pessoa SET cpf = %s WHERE id = %s"
# Dados para atualizar
dados_atualizar = (novo_cpf, id_atualizar)
# Executar a query
cursor.execute(query_atualizar_cpf, dados_atualizar)
# Confirmar a operação
conexao.commit()
print('CPF do ID', id_atualizar, 'atualizado com sucesso!')
except Exception as err:
print('Houve um erro ao atualizar CPF do ID')
print(err)
finally:
if conexao.is_connected():
cursor.close()
conexao.close()
print('Conexão encerrada.')