Bóson Treinamentos em Ciência e Tecnologia

Atualizar registros em banco MySQL com script em Python

Atualizar registros em banco MySQL com cláusula UPDATE e Python

Atualizar registros em banco MySQL com script em Python

Neste tutorial damos sequência à nossa série sobre acesso a bancos de dados MySQL usando scripts em Python. Desta vez, trago um script que permite realizar a atualização de registros em uma tabela do banco, por meio do emprego da cláusula SQL UPDATE. Vamos atualizar o preço de um produto selecionado na tabela de produtos, usada nos exemplos de lições anteriores.

No programa, cujo código é mostrado a seguir, vamos criar funções para definir três operações a serem realizadas:

  1. Conexão ao banco de dados: função conectar()
  2. Consulta ao produto cujo preço se deseja alterar: função consulta()
  3. Atualização do preço do produto com valor informado pelo usuário: função atualiza().

A função consulta() recebe como argumento o ID do produto cujo preço será alterado, sendo executada tanto antes da alteração quanto depois, para verificar se a atualização do registro ocorreu da forma esperada.

A função atualiza() recebe como argumento a declaração SQL que será executada no banco de dados, usando UPDATE.

A seguir temos o código completo do script para você testar e alterar à vontade:

Código

import mysql.connector
from mysql.connector import Error

# Script para atualização de registros em um banco de dados MySQL

def conectar():
    try:
        global con
        con = mysql.connector.connect(host='localhost',database='db_MeusLivros',user='root',password='abc123**')
    except Error as erro:
        print("Erro de Conexão")

def atualiza(declaracao):
    try:
        conectar()
        altera_preco = declaracao
        cursor = con.cursor()
        cursor.execute(altera_preco)
        con.commit()
        print("Preço alterado com sucesso!")
        cursor.close()
    except Error as erro:
        print("Falha ao inserir dados no MySQL: {}".format(erro))
    finally:
        if (con.is_connected()):
            cursor.close()
            con.close()

def consulta(idProd):
    try:
        conectar()
        consulta_sql = 'select * from tbl_produtos WHERE IdProduto = ' + idProd
        cursor = con.cursor()
        cursor.execute(consulta_sql)
        linhas = cursor.fetchall()
        for linha in linhas:
            print("Id:", linha[0])
            print("Produto:", linha[1])
            print("Preço:", linha[2])
    except Error as erro:
        print("Falha ao consultar tabela: {}".format(erro))
    finally:
        if (con.is_connected()):
            cursor.close()
            con.close()
    
# Programa principal
if __name__=='__main__':
    
    print("Rotina para atualização de preços produtos no banco de dados")
    print("Entre com os dados conforme solicitado:")
    print("\nDigite o codigo do produto a alterar:")
    idProd = input("Id do Produto: ")
    consulta(idProd)
    print("\nEntre com o novo preço do produto:")
    precoProd = input("Preço: ")
    declaracao = """UPDATE tbl_produtos
    SET Preco = """ + precoProd + """
    WHERE IdProduto = """ + idProd
    atualiza(declaracao)
    
    verifica = input("\nDeseja consultar a atualização? s = Sim, n = Não\n")
    if (verifica == 's'):
        consulta(idProd)
    else:
        print("\nAté mais!")

Ao executar o programa será solicitado o ID do produto cujo preço se deseja alterar. Ao informar um ID, serão mostrados os dados armazenados do produto, incluindo seu preço atual. Na sequência, o usuário deve informar o novo preço, que irá atualizar o registro na tabela de produtos.

Logo após a alteração, é perguntado ao usuário se ele quer conferir a alteração, ou se simplesmente deseja encerrar o programa.

Resultado

Veja a saída do programa ao ser executado, com o produto de ID igual a 4 tendo seu preço alterado:

No exemplo, o produto Teclado, que custava R$ 60,00, teve seu preço reajustado para R$ 65,00.

É isso aí! Na próxima lição vamos realizar a exclusão de registros da tabela usando um script em Python e a declaração SQL DELETE FROM.
Até!

Sair da versão mobile