Erro de indexação

27 views
Skip to first unread message

Sergio Iescas

unread,
Oct 29, 2023, 7:42:42 AM10/29/23
to Python Brasil
Bom dia paz seja com todos.
Quanto a condição esta correta o sistema funciona corretamente
A consulta a DB retorna numero da ordem cadastrado e continua o programa, porem quanto a ordem não e encontrado segue erro.
Eu preciso apenas que retorne ordem não encontrada
segue código:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
import pymysql
from utilitarios.ordem_producao import Ordem_producao

def conexao_4():

    while True:
        conexao = pymysql.connect(
            host='localhost',
            user='root',
            passwd='',
            database='automatizaf')
        cursor = conexao.cursor()
        cursor.execute('SELECT ordem_producao FROM tb_registro_ordem_producao WHERE'
                       ' ordem_producao =' + Ordem_producao.ordem_producao)
        resultado = cursor.fetchall()
        resultadoA = list(resultado[0])
        print(f'Ordem: {resultadoA[0]} Ok')
        cursor.close()
        if len(resultado) is not None:
            break
        else:
            print('ordem nao encontrada')
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
erro de indexação de dados.png

Renato Cunha

unread,
Oct 29, 2023, 8:51:29 AM10/29/23
to python...@googlegroups.com
Amigo, use try e except.

Abraço 

--
--
------------------------------------
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 acessar essa discussão na Web, acesse https://groups.google.com/d/msgid/python-brasil/17bef643-2869-44e8-bca7-44ff12661b85n%40googlegroups.com.

Message has been deleted

Sergio Iescas

unread,
Oct 29, 2023, 10:01:15 AM10/29/23
to Python Brasil
Boa tarde muito obrigado pela atenção, porem o erro persiste poderia por favor me ajudar?

segue codigo:

import pymysql
from utilitarios.ordem_producao import Ordem_producao

def conexao_4():

    global resultado

    while True:
        try:

            conexao = pymysql.connect(
                host='localhost',
                user='root',
                passwd='',
                database='automatizaf')
            cursor = conexao.cursor()
            cursor.execute('SELECT ordem_producao FROM tb_registro_ordem_producao WHERE'
                           ' ordem_producao =' + Ordem_producao.ordem_producao)
            resultado = cursor.fetchall()
            resultadoA = list(resultado[0])
            print(f'Ordem: {resultadoA[0]} Ok')
            cursor.close()
            break
        except len(resultado) is None:

            print('ordem nao encontrada')
            return
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Erro try exept.png

Renato Cunha

unread,
Oct 29, 2023, 10:41:33 AM10/29/23
to python...@googlegroups.com
Qual erro?

Em 29 de out. de 2023 10:56, Sergio Iescas <ac.tec.a...@gmail.com> escreveu:
Boa tarde muito obrigado pela atenção mais também da erro, poderia por favor me ajudar
segue código:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
import pymysql
from utilitarios.ordem_producao import Ordem_producao
Erro try exept.png

def conexao_4():

    global resultado

    while True:
        try:
            conexao = pymysql.connect(
                host='localhost',
                user='root',
                passwd='',
                database='automatizaf')
            cursor = conexao.cursor()
            cursor.execute('SELECT ordem_producao FROM tb_registro_ordem_producao WHERE'
                           ' ordem_producao =' + Ordem_producao.ordem_producao)
            resultado = cursor.fetchall()
            resultadoA = list(resultado[0])
            print(f'Ordem: {resultadoA[0]} Ok')
            cursor.close()
            break
        except len(resultado) is None:
            print('ordem nao encontrada')
            return

Sergio Iescas

unread,
Oct 29, 2023, 11:40:11 AM10/29/23
to python...@googlegroups.com
image.png
Boa tarde.
Este acima conforme a imagem anterior em anexo.

Lucas Pierre

unread,
Oct 29, 2023, 3:14:54 PM10/29/23
to Python Brasil
O erro é duplo:

Primeiro, você tem um IndexError: tuple index out of range quando tenta acessar um índice de uma tupla que não existe. Isso acontece na linha 20 do arquivo conexao4d.py;
Durante o tratamento da exceção anterior, outro erro é levantado. O erro é 'TypeError: catching classes that do not inherit from BaseException is not allowed'. Esse erro ocorre porque você está tentando capturar uma exceção usando a seguinte linha:

except len(resultado) is None:

Esse código tenta verificar se o comprimento de resultado é None, o que é um conceito que não faz sentido em Python, e não é uma classe de exceção válida.

Soluções:

1. Faça uma verificação para garantir que você está acessando um índice válido da tupla 'resultado'. Você pode verificar isso da seguinte forma:

if resultado and len(resultado) > 0:

    resultadoA = list(resultado[0])


2. Capture a exceção corretamente. Em vez de verificar se 'len(resultado) is None', você deve capturar o IndexError diretamente:

try:

    resultadoA = list(resultado[0])
except IndexError:
    # Manipule o erro aqui, por exemplo, definindo resultadoA como uma lista vazia
    resultadoA = []


Verifique se o erro desaparece ou persiste após as seguintes correções.

Sergio Iescas

unread,
Oct 29, 2023, 4:43:36 PM10/29/23
to python...@googlegroups.com

Boa tarde, paz seja com todos Sr Lucas Pierre muito obrigado
não sei se fiz da maneira correta mais o resultado esta ótimo
Quanto o usuário digita um ordem que não esta cadastrada no banco de dados não apresenta mais o erro mostrado nos arquivos anteriores.
image.png

image.png


Reply all
Reply to author
Forward
0 new messages