def excluirCliente(): codigo = editCodigo.get() try: if codigo == "": raise Exception("Faça uma pesquisa") conn = ConexaoDB().conexao() cursor = conn.cursor() sql = """ DELETE FROM clientes WHERE id_clientes = %s; """ val = (codigo,) cursor.execute(sql, val) conn.commit() labelStatus["text"] = "registro deletado." editpesquisa.delete(0, END) # Limpar Campos pesquisarCliente() except Exception as err: labelStatus["text"] = err print(err) else: cursor.close() conn.close()
def pesquisarCliente(): """ Pesquisar pelo nome do cliente """ # Valor a ser pesquisado pesquisar = editpesquisa.get() try: # Conexção ao Banco de dados conn = ConexaoDB(True).conexao() # tupla nomeada com buffer. cursor = conn.cursor(named_tuple=True) # Montar SQL cursor.execute("SELECT id_clientes, nome_clientes, telefone_clientes, email_clientes " "FROM clientes " "WHERE nome_clientes LIKE %s LIMIT %s;", (f"%{pesquisar}%", 1,)) row = cursor.fetchone() codigo = 0 if cursor.rowcount: labelStatus["text"] = "" codigo = row.id_clientes novoCliente(codigo) editCodigo.configure(state="normal") editCodigo.insert(0, codigo) editCodigo.configure(state="readonly") editNome.insert(0, row.nome_clientes) editFone.insert(0, row.telefone_clientes) editEmail.insert(0, row.email_clientes) else: labelStatus["text"] = "Não existe" labelStatus["font"] = ("Arial", "16", "bold") if codigo: botaoGravar.configure(state="disabled") except Exception as err: labelStatus["text"] = "Ocorreu um erro, desculpe" print(err) else: cursor.close() conn.close()
def validarEntrada(self): u = self.usuario.get() s = self.senha.get() try: cn = ConexaoDB() conn = cn.conexao() c = conn.cursor() sql = """ select id_login from login where user_login = %(usuario)s and password_login = %(senha)s; """ dados = {'usuario': u, 'senha': s} c.execute(sql, dados) c.fetchone() if c.rowcount == 1: self.status['text'] = "Acesso Aprovado" self.master.destroy() abrirSistemaPrincipal() else: self.status['text'] = "Login ou senha inválido." conn.close() except Exception as err: messagebox.showwarning("Error", err)
from include.conexao import ConexaoDB """ A MySQLCursorNamedTuple classe cria um cursor que retorna linhas como namedtuple. Para criar uma MySQLCursorNamedTuplepassagem named_tuple=Truepara o cursor() método do objeto de conexão. """ try: conn = ConexaoDB().conexao() # classe cria um cursor que retorna linhas como namedtuple. cursor = conn.cursor(named_tuple=True) try: # Executar o SQL cursor.execute( "SELECT nome_clientes, telefone_clientes FROM clientes order by nome_clientes LIMIT 1" ) # rowcount iria exibir -1 print("número de linhas (inicial):", cursor.rowcount, end="\n\n\n") # Resultado, processado por Tupla nomeada for row in cursor: print(row) print(row.nome_clientes, row.telefone_clientes) # Exibir numero de linhas existente na tabela print("\n\nnúmero de linhas (inicial):", cursor.rowcount)
import mysql.connector from include.conexao import ConexaoDB """ executemany No exemplo do insert ele convete o dicionario em um insert unico Em vez de fazer quatro insert faz um unico sendo muito mais eficiente """ try: db = ConexaoDB().conexao() # return a buffered MySQLCursorNamedTuple cursor = db.cursor(prepared=True) sql1 = """ create temporary table tmp_clientes( id_tmp_clientes int AUTO_INCREMENT PRIMARY KEY, nome_tmp_clientes VARCHAR(100) NOT NULL, idade_tmp_clientes SMALLINT NOT NULL ) """ # # Criar tabela temporaria cursor.execute(sql1) # # SQL para insert sql2 = """ insert into tmp_clientes(nome_tmp_clientes, idade_tmp_clientes) VALUES (%s, %s)
from include.conexao import ConexaoDB """ fetchone() Retorna a próxima linha do conjunto de resultados como tupla. Se não houver mais linhas para recuperar, None será retornado. """ try: cn = ConexaoDB() conn = cn.conexao() c = conn.cursor() try: c.execute("SELECT * FROM clientes limit 5;") print(c.fetchone()) # Retorna uma linha print(c.fetchmany(2)) # Numero de linha que dever retornar print(c.fetchall()) # busca todas as linhas restantes print(c.fetchmany()) # o conjunto de resultados agora está vazio """ Na linha 1, chamamos fetchone() para ler a primeira linha do conjunto de resultados. Em seguida, chamamos fetchmany() para ler as próximas 2 linhas e, finalmente, chamamos fetchall() para buscar a linha restante. O conjunto de resultados está vazio agora, portanto, a próxima chamada para fetchmany() retorna uma lista vazia. """ except: raise Exception("Problema para selecionar") finally: c.close() conn.close() except Exception as err:
def cadastraCliente(): """ Cadastrar As ações Insert e Update São realizadas na mesma função """ codigo = editCodigo.get() codigo = 0 if codigo == "" else int(codigo) nome = editNome.get() fone = editFone.get() email = editEmail.get() if nome == "" or fone == "" or email == "": labelStatus["text"] = "Todos campos são obrigatório" else: try: conn = ConexaoDB().conexao() cursor = conn.cursor() dados = { "id": codigo, "nome": nome, "fone": fone, "email": email } # Mondar INSERT com UPDATE sql = """ INSERT INTO clientes (id_clientes, nome_clientes, telefone_clientes, email_clientes, aniversario_clientes) VALUES (%(id)s, %(nome)s, %(fone)s, %(email)s, NOW()) ON DUPLICATE KEY UPDATE id_clientes = %(id)s, nome_clientes = %(nome)s, telefone_clientes = %(fone)s, email_clientes = %(email)s; """ # print(dados) # print(sql, "\n\n\n\n") cursor.execute(sql, dados) conn.commit() editCodigo.configure(state="normal") editCodigo.delete(0, END) editCodigo.insert(0, cursor.lastrowid) editCodigo.configure(state="readonly") botaoGravar.configure(state="disabled") botaoAlterar.configure(state="normal") botaoExcluir.configure(state="normal") labelStatus["text"] = "Gravado com sucesso!" # # Except de varios erros except (mysql.connector.IntegrityError, mysql.connector.DataError) as err: print("IntegrityError or DataError") print(err) except mysql.connector.ProgrammingError as err: print("ProgrammingError") print(err.errno) print(err.sqlstate) print(err.msg) except mysql.connector.Error as err: print("Error") print(err) else: # novoCliente() cursor.close() conn.close()
def conteudo(self, master): frameMid = Frame(master) Label(frameMid, text="Lista de Pessoas", font=("Arial", 15)).grid(row=1, column=1, columnspan=4, pady=5) Label(frameMid, text="Código", relief=RIDGE, width=7, bg="dark grey").grid(row=2, column=1) Label(frameMid, text="Nome", relief=RIDGE, width=30, bg="dark grey").grid(row=2, column=2) Label(frameMid, text="Telefone", relief=RIDGE, width=15, bg="dark grey").grid(row=2, column=3) Label(frameMid, text="E-mail", relief=RIDGE, width=30, bg="dark grey").grid(row=2, column=4) try: conn = ConexaoDB().conexao() cursor = conn.cursor(buffered=True, raw=True) sql = """ select id_clientes, nome_clientes, telefone_clientes, email_clientes from clientes order by id_clientes asc limit 10; """ cursor.execute(sql) contRow = 2 for (codigo, nome, fone, email) in cursor: # print(codigo.decode(), nome.decode(), fone.decode(), email.decode()) corRow = "white" if contRow % 2 == 0 else "light gray" Label(frameMid, text=codigo.decode(), relief=RIDGE, width=7, bg=corRow).grid(row=contRow + 1, column=1) Label(frameMid, text=nome.decode(), relief=RIDGE, width=30, bg=corRow, anchor=W).grid(row=contRow + 1, column=2) Label(frameMid, text=fone.decode(), relief=RIDGE, width=15, bg=corRow).grid(row=contRow + 1, column=3) Label(frameMid, text=email.decode(), relief=RIDGE, width=30, bg=corRow, anchor=E).grid(row=contRow + 1, column=4) contRow += 1 except Exception as err: print("Erro:", err) else: cursor.close() conn.close() frameMid.pack()