Python e MySQL: Conectando e Gerenciando Dados

Introdução
A integração entre Python e MySQL é uma das formas mais populares de trabalhar com banco de dados relacional usando programação. Python oferece bibliotecas robustas para manipulação de MySQL, permitindo realizar desde consultas simples até operações avançadas, como transações e otimizações.

Neste artigo, vamos aprender a configurar o ambiente, realizar a conexão e executar operações básicas no banco de dados MySQL utilizando Python. Além disso, vamos gerar uma tabela com dados aleatórios, realizar a leitura dessa tabela e exportá-la para um arquivo HTML.

1. Preparando o Ambiente

Antes de começarmos a codificar, precisamos garantir que tudo esteja devidamente configurado. Para isso, siga os seguintes passos:

1.1 Instalando o MySQL

Instale o MySQL no seu sistema operacional. Se você está usando o Ubuntu, por exemplo, os seguintes comandos podem ajudar:

sudo apt update
sudo apt install mysql-server
sudo systemctl start mysql
sudo systemctl enable mysql

Para verificar se o MySQL está rodando, use:

sudo systemctl status mysql

1.2 Instalando o conector MySQL para Python

Python possui um conector oficial chamado mysql-connector-python, que facilita a conexão com o MySQL. Você pode instalá-lo via pip:

pip install mysql-connector-python

1.3 Configurando o Banco de Dados

Após instalar o MySQL, vamos criar um banco de dados simples para testar nossas operações com Python:

CREATE DATABASE exemplo_python;
USE exemplo_python;

CREATE TABLE usuarios (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nome VARCHAR(255),
    email VARCHAR(255)
);

2. Conectando Python ao MySQL

Agora que temos o MySQL rodando e um banco de dados configurado, vamos conectar o Python ao MySQL. Isso é feito através do mysql.connector.

2.1 Exemplo de Conexão

Aqui está um exemplo simples de como conectar Python ao MySQL:

import mysql.connector

# Conectando ao banco de dados
conexao = mysql.connector.connect(
    host="localhost",
    user="root",  # Altere para o seu usuário MySQL
    password="sua_senha",  # Altere para sua senha MySQL
    database="exemplo_python"
)

# Verificando se a conexão foi estabelecida com sucesso
if conexao.is_connected():
    print("Conectado ao MySQL com sucesso!")

3. Operações CRUD em Python e MySQL

CRUD significa Create, Read, Update e Delete, e refere-se às quatro operações principais de interação com um banco de dados.

3.1 CREATE: Inserindo Dados no Banco

Vamos começar inserindo novos registros na tabela usuarios.

cursor = conexao.cursor()

sql = "INSERT INTO usuarios (nome, email) VALUES (%s, %s)"
valores = ("João Silva", "joao@email.com")

cursor.execute(sql, valores)
conexao.commit()  # Confirma a transação

print(cursor.rowcount, "registro inserido com sucesso.")

3.2 READ: Lendo Dados do Banco

Agora, vamos buscar os dados armazenados na tabela usuarios.

sql = "SELECT * FROM usuarios"
cursor.execute(sql)

resultados = cursor.fetchall()

for linha in resultados:
    print(linha)

3.3 UPDATE: Atualizando Dados

Aqui está um exemplo de como atualizar os dados de um usuário.

sql = "UPDATE usuarios SET email = %s WHERE nome = %s"
valores = ("joao_silva@novoemail.com", "João Silva")

cursor.execute(sql, valores)
conexao.commit()

print(cursor.rowcount, "registro(s) atualizado(s).")

3.4 DELETE: Excluindo Dados

Finalmente, para deletar um registro do banco de dados:

sql = "DELETE FROM usuarios WHERE nome = %s"
valores = ("João Silva",)

cursor.execute(sql, valores)
conexao.commit()

print(cursor.rowcount, "registro(s) deletado(s).")

4. Criando uma Tabela com Valores Aleatórios

Agora, vamos criar uma tabela com 10 colunas e inserir dados aleatórios para simular um cenário mais complexo. Usaremos a biblioteca random do Python para gerar os valores aleatórios e preencher as colunas.

4.1 Criando a Tabela

Primeiro, criamos uma nova tabela com 10 colunas para armazenar dados de exemplo:

CREATE TABLE exemplo_aleatorio (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nome VARCHAR(255),
    idade INT,
    salario FLOAT,
    cidade VARCHAR(255),
    email VARCHAR(255),
    telefone VARCHAR(20),
    departamento VARCHAR(255),
    data_admissao DATE,
    status VARCHAR(50),
    supervisor VARCHAR(255)
);

4.2 Inserindo Dados Aleatórios

Agora vamos gerar e inserir valores aleatórios na tabela usando Python:

import random
from datetime import datetime

nomes = ["João", "Maria", "Pedro", "Ana", "Carlos", "Julia", "Lucas", "Fernanda", "Paulo", "Sofia"]
cidades = ["São Paulo", "Rio de Janeiro", "Belo Horizonte", "Curitiba", "Fortaleza"]
departamentos = ["Vendas", "RH", "TI", "Financeiro", "Marketing"]
status_opcoes = ["Ativo", "Inativo", "Licença", "Contratado"]

cursor = conexao.cursor()

# Inserindo 10 registros com valores aleatórios
for _ in range(10):
    nome = random.choice(nomes)
    idade = random.randint(20, 60)
    salario = round(random.uniform(3000.00, 10000.00), 2)
    cidade = random.choice(cidades)
    email = f"{nome.lower()}@exemplo.com"
    telefone = f"({random.randint(10, 99)}) {random.randint(90000, 99999)}-{random.randint(1000, 9999)}"
    departamento = random.choice(departamentos)
    data_admissao = datetime.now().date()
    status = random.choice(status_opcoes)
    supervisor = random.choice(nomes)

    sql = "INSERT INTO exemplo_aleatorio (nome, idade, salario, cidade, email, telefone, departamento, data_admissao, status, supervisor) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
    valores = (nome, idade, salario, cidade, email, telefone, departamento, data_admissao, status, supervisor)

    cursor.execute(sql, valores)

conexao.commit()
print("Dados aleatórios inseridos com sucesso.")

5. Leitura dos Dados e Exportação para HTML

Agora que temos nossa tabela preenchida com dados aleatórios, vamos ler os dados e exportá-los para um arquivo HTML utilizando o Pandas.

5.1 Instalando a Biblioteca Pandas

Instale a biblioteca Pandas, se ainda não a tiver instalada:

pip install pandas

5.2 Lendo os Dados da Tabela

Usamos o Pandas para ler os dados da tabela exemplo_aleatorio:

import pandas as pd

# Lendo os dados da tabela exemplo_aleatorio
sql = "SELECT * FROM exemplo_aleatorio"
df = pd.read_sql(sql, conexao)

print(df.head())  # Exibindo as 5 primeiras linhas

5.3 Exportando os Dados para HTML

Agora, vamos exportar o DataFrame resultante para um arquivo HTML:

# Exportando para HTML
df.to_html("tabela_exemplo.html", index=False)
print("Tabela exportada para HTML com sucesso.")

6. Tratamento de Erros e Boas Práticas

6.1 Lidando com Exceções

É importante adicionar um tratamento de erros ao conectar-se ao banco de dados e ao realizar operações:

try:
    conexao = mysql.connector.connect(
        host="localhost",
        user="root",
        password="sua_senha",
        database="exemplo_python"
    )
    if conexao.is_connected():
        print("Conexão estabelecida.")
except mysql.connector.Error as erro:
    print(f"Erro ao conectar ao MySQL: {erro}")
finally:
    if conexao.is_connected():
        conexao.close()
        print("Conexão encerrada.")

6.2 Fechando Conexões

Sempre lembre-se de fechar a conexão e o cursor após concluir as operações para evitar vazamento de memória e bloqueios desnecessários:

cursor.close()
conexao.close()

7. Conclusão

Integrar Python com MySQL é uma forma eficiente de gerenciar e manipular dados em projetos que exigem persistência de informações. Com as operações básicas de CRUD, a geração de dados aleatórios e a exportação de tabelas para HTML, você pode construir aplicações robustas, desde simples sistemas de gerenciamento de dados até projetos

Edvaldo Guimrães Filho Avatar

Published by

Categories:

Leave a comment