tratamento de erro consulta mysql, não retorna erro na consulta quando não encontra usuario retorna lista vazia

376 views
Skip to first unread message

Sergio Iescas

unread,
Feb 22, 2021, 4:12:49 AM2/22/21
to Python Brasil
Bom dia saudações a todos na paz do Senhor Jesus, desde ja muito obrigado pela atenção ao colegas e irmão do forum Python Brasil.

        while True:
            if len(usuario) < 3 or len(usuario) >= 4:
                print('Usuario Invalido!!')
                usuario = str(input('Informe o usuaio para processeguir: '))
                userman = usuario

            elif len(usuario) == 3:  # senha de 3 digitos usuario da produção
                try:
                    c = conexao.ConexaoDB()
                    # sql = f"SELECT * FROM tb_usuarios WHERE senha_usuario = {userman}"
                    sql = 'SELECT senha_usuario, nome_usuario FROM tb_usuarios WHERE senha_usuario =' + userman
                    resposta = c.executa_DQL(sql)
                    if not resposta:
                        print('usuario não encontrado')
                        return
                    else:
                        print(resposta)
                        return resposta
                except Exception:
                    print('Falha na consulta ao database!')
                    break

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

O código acima realiza consulta no data base mysql e retorna o usuário conforme informado, quando digito um código de três digitos que não consta no banco de dados ele não consegui identificar que o digo não existe no database, deveria me retornar usuário não encontrado, digite novamente.  por favor aguem pode me ajudar?

Luiz Antonio Calliari Filho

unread,
Feb 22, 2021, 6:56:59 PM2/22/21
to Python Brasil
Boa noite,
Não entendi o que ele está dando de erro quando o código não é encontrado.

Não conheço sql no python, mas recomendaria que você confirme que a busca no banco está retornando o valor de "resposta" vazio quando a busca não é encontrada. Tente dar um "print' na resposta após executar o comando.

Abraço

Sergio Iescas

unread,
Feb 22, 2021, 7:57:33 PM2/22/21
to python...@googlegroups.com

Boa noite Luiz,o problema e que quando eu digito na pesquisa um código de tres digitos que não existe no banco de dados ele não da erro ele me retorna uma lista vazia  
na imagem abaixo o primeiro código o usuario foi encontrado retorno ok
ja na consulta do equipamento digitei um código que não esta cadastrado no banco de dados
Preciso alterar o código para que ele retorne para mim usuario não encontrado e e solicite novamente a inserção do usuario.
erro 1.png


--
--
------------------------------------
Grupo Python-Brasil
https://wiki.python.org.br/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/python-brasil/a8fcdd5c-17f8-4f79-bec4-35565ce0bb0ao%40googlegroups.com.

Lucas Brahm

unread,
Feb 23, 2021, 7:23:01 AM2/23/21
to python...@googlegroups.com
Com só esse pequeno trecho de código fica difícil ajudar. Tente postar um pouco mais do código para termos noção melhor onde cada coisa é chamada e encapsulada.

Jorge Miguel

unread,
Feb 23, 2021, 7:33:29 AM2/23/21
to python...@googlegroups.com
Se eu bem entendi a sua dúvida, tire o break no final do exception e veja se ele vai voltar no while

ACMM

unread,
Feb 23, 2021, 7:39:44 AM2/23/21
to python...@googlegroups.com
Concordo com o que o Lucas explicou.

Sent from my AC&MM Galaxy A70

Sergio Iescas

unread,
Feb 23, 2021, 11:32:31 AM2/23/21
to python...@googlegroups.com
Muito obrigado pela atenção no final do dia vou postar o código inteiro no repositório gisthub

Sergio Iescas

unread,
Feb 23, 2021, 4:58:54 PM2/23/21
to python...@googlegroups.com
Boa noite, conforme solicitado segue repositorio do arquivo completo.

Sergio Iescas

unread,
Feb 23, 2021, 5:20:42 PM2/23/21
to python...@googlegroups.com
Tentei encapsular o comando dentro de um while True: não funcionou devo ter feito alguma coisa errada, respondendo ao colega Jorge se tirar o brack o programa entra num lupin infinito.
Se digitar todos os endereços validos ou existentes no banco de dados roda perfeitamente ate onde eu consegui editar
Nota: essa e apenas uma parte do processo.
O que eu preciso que ao realizar a consulta de um endereço que não existe,  no banco de dados, ao invez de me retornar um lista vazia me retorne uma mensagem tipo: (endereço não encontrado.)

execut1.jpg

Sergio Iescas

unread,
Feb 23, 2021, 5:23:36 PM2/23/21
to python...@googlegroups.com

Esqueci de especificar o arquivo do repositório é o automatizaPy

Daniel Chaves de Lima

unread,
Feb 24, 2021, 4:26:02 PM2/24/21
to python...@googlegroups.com
tenta fazer 
if resposta is None:
ao invés de 
if not resposta:

Sergio Iescas

unread,
Feb 25, 2021, 4:23:27 AM2/25/21
to python...@googlegroups.com
Bom dia a todos na paz do senhor jesus.
Daniel obrigado pela atenção, não a resposta ainda continua uma lista vazia conforme a imagem abaixo.

falha 2.jpg



--
--
------------------------------------
Grupo Python-Brasil
https://wiki.python.org.br/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.

Luiz Antonio Calliari Filho

unread,
Feb 25, 2021, 9:48:17 AM2/25/21
to Python Brasil
Bom dia,
Tentei encontrar o erro mas sem sucesso. Então vou partir pro achismo e chutismo!

Consegue enviar um print da base de dados em que você está buscando essa informação?

Abraço

Em quinta-feira, 25 de fevereiro de 2021 06:23:27 UTC-3, Sergio Iescas escreveu:
Bom dia a todos na paz do senhor jesus.
Daniel obrigado pela atenção, não a resposta ainda continua uma lista vazia conforme a imagem abaixo.

falha 2.jpg



Em qua., 24 de fev. de 2021 às 18:26, Daniel Chaves de Lima <danielc...@gmail.com> escreveu:
tenta fazer 
if resposta is None:
ao invés de 
if not resposta:

--
--
------------------------------------
Grupo Python-Brasil
https://wiki.python.org.br/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:

---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python...@googlegroups.com.

Cleber Cavalcante

unread,
Feb 25, 2021, 9:51:05 AM2/25/21
to python...@googlegroups.com
Boa noite Sergio,
altera essa linha: if not resposta:
para: if resposta == None: ou if resposta.rowcount < 1:

Creio que o problema possa estar por ai.

--
--
------------------------------------
Grupo Python-Brasil
https://wiki.python.org.br/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:

---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/python-brasil/7d10f592-41b3-4d4a-b6fc-fe72c9ac489ao%40googlegroups.com.

Sergio Iescas

unread,
Feb 26, 2021, 4:58:38 AM2/26/21
to python...@googlegroups.com

Bom dia a todos na paz do Senhor Jesus.
Cleber muito obrigado pela atenção, com "if respota == None" retorna lista vazia, ja com comando rouncont < 1: pela a execução do codigo para o except do try. conforme imagem abaixo.

novo resultado1.jpg


Luiz bom dia
conforme solicitado segue:
Seria  imagem dessa pagina?
database1.jpg


Junior Phanter

unread,
Feb 26, 2021, 8:43:51 AM2/26/21
to python...@googlegroups.com
Saudações... Sergio, tente usar o comando type para saber o que ele está retornando quando não encontra, olhando me parece uma lista vazia, que é um booleano False, porém se o tipo for uma string ou um objeto o resultado será True.
Observe a imagem:
image.png



Sergio Iescas

unread,
Feb 26, 2021, 6:20:05 PM2/26/21
to python...@googlegroups.com

Boa noite a todos
Seria isso?

consulta1.jpg


Livre de vírus. www.avast.com.


Livre de vírus. www.avast.com.

Adriano Christi

unread,
Feb 28, 2021, 2:42:21 AM2/28/21
to Python Brasil
Bom, se o programa está dando como resposta uma lista vazia quando não excontra um resultado compatível com a busca, entende-se que ou u resultado é entregue, por padrão, dentro de uma lista ou foi estipulado pelo programador que o resultado seja colocado em uma lista, certo? 
Então, partindo dessa ideia, pra que o programa tenha uma interação prática com o usuário oferecendo a ele a resposta "Usuário não encontrado" quando não encontra o que procura, basta colocar o seguinte:
if len(resposta) == 0:
    print("Usuário não encontrado.")

Imagino que assim resolva.

Sent from my AC&MM Galaxy Tab S4

Adriano Christi

unread,
Feb 28, 2021, 2:47:50 AM2/28/21
to Python Brasil
Só mais um detalhe.
Não sei se estou enganado, mas creio que uma busca em um banco de dados, em Python, devolve como resultado uma tupla e não uma lista. Corrijam-me se eu estiver errado.

Sent from my AC&MM Galaxy Tab S4
Em segunda-feira, 22 de fevereiro de 2021 às 06:12:49 UTC-3, ac.tec.a...@gmail.com escreveu:

Sergio Iescas

unread,
Feb 28, 2021, 7:11:45 PM2/28/21
to python...@googlegroups.com
Adriano boa noite
Muito obrigado pela atenção, com a linha de comando sugerida ele realiza a resposta correta no caso do usuario não encontrado, quando isso acontece eu tenho que retornar a linha 27 do programa conforme a imagem que o inicio o (While True) para registro do usuario por favor como eu faço isso?
Da maneira como esta ele continua para próxima
erro salto.jpg
 fase ignorando o erro do usuario não encontrado.


--
--
------------------------------------
Grupo Python-Brasil
https://wiki.python.org.br/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.

Adriano Christi

unread,
Mar 1, 2021, 6:58:40 AM3/1/21
to Python Brasil
Experimenta colocar o seguinte:

resposta = [ ]
while len(resposta) == 0:
    Toma-lhe código.

Sérgio, eu te aconselho a estudar e praticar mais sobre lógica de programação. Digo isso por experiência própria ao querer criar aplicações que precisavam de estruturas que eu não dominava ou nem fazia ideia como funcionavam e com isso o projeto empacava e quase não saía.
Outra sugestão que eu dou é a de usar o fórum pra pedir ajuda só quando não encontrar nada nas pesquisas pela internet porque isso atiça nosso raciocínio e nos ajuda a encontrar formas mais eficazes de resolver o problema que queremos. Não estou dizendo que tu não pesquisas, mas procura fazer isso até esgotarem as possibilidades e pedir ajuda aqui só em último caso.
Entende isso apenas como sugestão e não como crítica destrutiva.

Sent from my AC&MM Galaxy A70

Daniel Chaves de Lima

unread,
Mar 2, 2021, 10:35:14 AM3/2/21
to python...@googlegroups.com
como está a classe ConeccaoDB?

Luiz Antonio Calliari Filho

unread,
Mar 3, 2021, 1:45:14 PM3/3/21
to Python Brasil
Boa tarde,
Na linha 48 deixe só print(type(resposta)) para que no print do erro apareça qual o tipo da variável.

Abraço

Em sexta-feira, 26 de fevereiro de 2021 20:20:05 UTC-3, Sergio Iescas escreveu:

Boa noite a todos
Seria isso?

consulta1.jpg


Livre de vírus. www.avast.com.


---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python...@googlegroups.com.

--
--
------------------------------------
Grupo Python-Brasil
https://wiki.python.org.br/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:

---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python...@googlegroups.com.

--
--
------------------------------------
Grupo Python-Brasil
https://wiki.python.org.br/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:

---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python...@googlegroups.com.

--
--
------------------------------------
Grupo Python-Brasil
https://wiki.python.org.br/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:

---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python...@googlegroups.com.

Sergio Iescas

unread,
Mar 3, 2021, 5:52:23 PM3/3/21
to Python Brasil
Boa noite a todos.

Respondendo ao colega danielc...
segue arquivo conexao.py 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
import mysql.connector


class ConexaoDB():

    def __init__(self, host="localhost", user="root", pwd="", db="automatizaf"):
        self.host = host
        self.user = user
        self.pwd = pwd
        self.db = db

    def conecta(self):

        while True:
            try:
                self.con = mysql.connector.connect(host=self.host,
                                                   user=self.user,
                                                   password=self.pwd,
                                                   database=self.db)
                self.cur = self.con.cursor()
                # print('Conexão OK')
                break
            except Exception:
                print('Falha conexão!')
                while True:
                    print('Automatiza 100% Automação')
                    print('Entre com a senha padrão: 000')
                    senha1 = int(input('Informe senha padrão: '))
                    if senha1 == 000:
                        break
                    else:
                        print('Senha Incorreta!')
                        break

    def desconecta(self):
        self.con.close()

    def executa_DQL(self, sql):
        self.conecta()
        self.cur.execute(sql)
        res = self.cur.fetchall()
        self.desconecta()
        return res

    def executa_DML(self, sql):
        self.conecta()
        self.cur.execute(sql)
        self.con.commit()
        self.desconecta()
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Reply all
Reply to author
Forward
0 new messages