HOME/Articles/

mysql example crud (snippet)

Article Outline

Python mysql example 'crud'

Functions in program:

  • def deletar():
  • def update():
  • def read():
  • def create():
  • def ask_altura():
  • def ask_sexo():
  • def ask_dta():
  • def ask_name(msg = "DÍGITE O NOME: "):
  • def validar_dia():
  • def validar_mes():
  • def validar_ano():
  • def ask_int(msg, msg2):

Modules used in program:

  • import datetime
  • import mysql.connector

python crud

Python mysql example: crud

import mysql.connector
import datetime
from mais_um import funcoes

cnx = mysql.connector.connect(user='root', password='root',
                              host='127.0.0.1', database='test')

#funcões
def ask_int(msg, msg2):
    try:
        ask = int(input(msg))
        return ask
    except(ValueError):
        print(msg2)
        return ask_int(msg,msg2)

def validar_ano():
    ano = ask_int("DIGITE O ANO DE NASCIMENTO: ",
                  "CONTEUDO DIGITADO INVALIDO. TENTE NOVAMENTE.")

    num = len(str(ano))

    if num == 4:
        return ano
    else:
        print("Ano invalido. Tente novamente.")
        return validar_ano()

def validar_mes():
    mes = ask_int("DIGITE O MÊS DE NASCIMENTO: ",
                  "CONTEUDO DIGITADO INVALIDO. TENTE NOVAMENTE.")

    if mes <= 12 and mes >= 1:
        return mes
    else:
        print("DIA INVALIDO, TENTE NOVAMENTE.")
        return validar_mes()

def validar_dia():
    dia = ask_int("DIGITE O DIA DE NASCIMENTO: ",
                  "CONTEUDO DIGITADO INVALIDO. TENTE NOVAMENTE.")

    if dia <= 31 and dia >= 1:
        return dia
    else:
        print("DIA INVALIDO, TENTE NOVAMENTE.")
        return validar_dia()

def ask_name(msg = "DÍGITE O NOME: "):
    nome = input(msg)

    if len(nome) > 50:
        input("O nome utrapassa a quantidade maxima de letras."+ \
              "-----------------------------------" + \
              "precione [ENTER] e tente novamente.")
        return ask_name()
    return nome

def ask_dta():
    ano = validar_ano()
    mes = validar_mes()
    dia = validar_dia()

    try:
        data = datetime.date(ano, mes, dia)
        return "{}-{}-{}".format(str(ano), str(mes), str(dia))
    except(ValueError):
        print("Data inexistente, tente novamente.")
        return ask_dta()

def ask_sexo():
    print("SEXO ")
    sexo  = input("DIGITE:\n"+ \
                  " F - para feminino\n"+ \
                  " M - para masculino\n"+ \
                  " O - para outros\n")
    sexo = sexo.upper()

    if sexo == "O" or sexo == "F" or sexo == "M":
        return sexo
    else:
        print("OPÇÃO INVALIDA. TENTE NOVAMENTE.")
        return ask_sexo()

def ask_altura():
    altura = ask_int("DIGITE SUA ALTURA EM CMs: ",
                      "Valor invalido. Tente novamente.")

    if altura >= 10 and altura <= 250:
        return altura
    else:
        print("Só é aceito valores entre 10 a 250.\n"+\
              "tente novamente.")
        return  ask_altura()

#fim

def create():
   name   = ask_name()
   data   = ask_dta()
   sexo   = ask_sexo()
   altura = ask_altura()

   sql = "INSERT INTO  tb_pessoas(nme_pessoa, dta_nasc_pessoa, sex_pessoa, num_altura_pessoa) VALUES (%s, %s, %s, %s);"
   cursor = cnx.cursor()
   cursor.execute(sql, (name, data, sexo, altura))
   cnx.commit()
   cursor.close()
   input("----------------------------------------------"+ \
         "CADASTRO CONCLUIDO!\n"+ \
         "----------------------------------------------"+\
         "presione [ENTER]")


   return

def read():
    opcao = ask_int("DIGITE:\n" + \
                    "  1 - para todos os cadastros\n"+ \
                    "  2 - para procurar por nome.\n",
                    "CONTEUDO DIGITADO INVALIDO. TENTE NOVAMENTE.")
    if opcao == 1:
        sql = "SELECT * FROM tb_pessoas;"
        cursor = cnx.cursor()
        cursor.execute(sql, )

    elif opcao == 2:
        name = ask_name()
        sql = "SELECT * FROM tb_pessoas WHERE nme_pessoa LIKE CONCAT('%', %s, '%');"

        cursor = cnx.cursor()
        cursor.execute(sql, (name,))
    else:
        print("OPÇÃO INVALIDA! TENTE NOVAMENTE.")
        return read()


    for (idt, nome, data, sexo, altura) in cursor:
        print(idt, nome, data, sexo, altura)
    cursor.close()
    print("-------------------------------------------------")
    input("[Enter] para menu")


    return

def update():
   idt = ask_int("Qual a matricula para alterar? ",
                 "lembrece que a matricula é composta de números.\n"+ \
                 " Tente novamente.\n\n")

   sql    = ("SELECT * from tb_pessoas WHERE idt_pessoa=%s;")

   cursor = cnx.cursor()
   cursor.execute(sql, (idt,))
   (idt, nme, dta, sex, num_altura) = cursor.fetchone()
   cursor.close()

   nome   = ask_name("Digite o novo nome do(a) [" + nme + "]: ")
   data   = ask_dta()
   sexo   = ask_sexo()
   altura = ask_altura()

   sql = "UPDATE tb_pessoas SET nme_pessoa=%s, dta_nasc_pessoa=%s, "+ \
         "sex_pessoa=%s, num_altura_pessoa=%s WHERE idt_pessoa=%s;"
   cursor = cnx.cursor()
   cursor.execute(sql, (nome, data, sexo, altura, idt))
   cnx.commit()
   cursor.close()

   print("-------------------------------------------------")
   input("[Enter] para menu")
   return

def deletar():
    idt = ask_int("DIGITE A NUMERO DO CADASTRO: ",
                  "Só é aceito numeros inteiros.\n Tente novamente.")

    sql = ("SELECT * from tb_pessoas WHERE idt_pessoa=%s;")

    cursor = cnx.cursor()
    cursor.execute(sql, (idt,))
    (idt, nme, dta, sex, altura) = cursor.fetchone()
    cursor.close()

    print("Nome: " + nme)
    print("Matricula: ", idt)

    confirmacao = input("EXCLUIR [S/N]:")

    if confirmacao.upper() == "S":
        sql = "DELETE FROM tb_pessoas WHERE idt_pessoa=%s;"
        cursor = cnx.cursor()
        cursor.execute(sql, (idt,))
        cnx.commit()
        cursor.close()
        print("Excluido.")

    print("-------------------------------------------------")
    input("[Enter] para menu")

    return

text = True
while text:
   print("BEM VINDO AO BANCO DE DADOS!\n\n")
   try:
      menu = int(input("DÍGITE:\n  1 - para criar cadastro\n" + \
                       "  2 - para pesquisar cadastro\n" + \
                       "  3 - para alterar cadastro\n" + \
                       "  4 - para excluir cadastro\n" + \
                       "  5 - para sair.\n"))

   except(ValueError):
      print("Objeto digitado não coresponde com nenhuma opção\n"+ \
            "TENTE NOVAMENTE.")

   if menu == 1:
      create()
   elif menu == 2:
      read()
   elif menu == 3:
      update()
   elif menu == 4:
      deletar()
   elif menu == 5:
      print("FIM DO PROGRAMA.")
      cnx.close()
      text = False
   else:
      print("Objeto digitado não coresponde com nenhuma opção\n" + \
            "TENTE NOVAMENTE.")