top of page

MySQL e Python com método CRUD

Atualizado: 10 de jun.


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




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...



  1. 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.')


Posts recentes

Ver tudo

xlsx em csv

Quando preciso subir um arquivo em excel para meu banco de dados, o caminho mais fácil é converter o arquivo em excel xlsx para csv....

© 2017-2024  Criado e desenvolvido por Amanda Nascimento. 

  • Discord
  • GitHub
  • youtube
  • LinkedIn Amanda
bottom of page