2
respostas

IndexError: tuple index out of range

boa noite, não estou conseguindo identificar o meu erro, por mais que (acho que) entendi a natureza do erro.

def traduz_produtos_optica(produtos_optica):
    def cria_produto_optica_com_tupla(tuplao):
        return ProdutoOptica(tuplao[1], tuplao[2], tuplao[3], tuplao[4], id=tuplao[0])
    return list(map(cria_produto_optica_com_tupla(produtos_optica)))
class ProdutoOptica:
    def __init__(self, subgrupo, marca, modelo, pdv_origem, id=None):
        self.id = id
        self.subgrupo = subgrupo
        self.marca = marca
        self.modelo = modelo
        self.pdv_origem = pdv_origem
class ProdutoOpticaDao:
    def __init__(self, db):
        self.__db = db

    def salvar(self, produto_optica):
        cursor = self.__db.connection.cursor()

        if (produto_optica.id):
            cursor.execute(SQL_ATUALIZA_PRODUTO_OPTICA, (produto_optica.subgrupo, produto_optica.marca,
                                                         produto_optica.modelo, produto_optica.pdv_origem, produto_optica.id))
        else:
            cursor.execute(SQL_CRIA_PRODUTO_OPTICA, (produto_optica.subgrupo, produto_optica.marca,
                                                     produto_optica.modelo, produto_optica.pdv_origem))
            produto_optica.id = cursor.lastrowid
        self.__db.connection.commit()
        return produto_optica

    def listar_produtos_optica(self):
        cursor = self.__db.connection.cursor()
        cursor.execute(SQL_BUSCA_PRODUTO_OPTICA)
        produtos_optica = traduz_produtos_optica(cursor.fetchall())
        return produtos_optica

    def busca_por_id(self, id):
        cursor = self.__db.connection.cursor()
        cursor.execute(SQL_PRODUTO_OPTICA_POR_ID, (id,))
        tupla = cursor.fetchone()
        return ProdutoOptica(tupla[1], tupla[2], tupla[3], tupla[4], id=tupla[0])
SQL_BUSCA_PRODUTO_OPTICA = 'SELECT id, subgrupo, marca, modelo, pdv_origem from produtos_optica'
SQL_PRODUTO_OPTICA_POR_ID = 'SELECT id, subgrupo, marca, modelo, pdv_origem from produtos_optica where id = %s'
SQL_ATUALIZA_PRODUTO_OPTICA = 'UPDATE produtos_optica SET subgrupo=%s marca=%s modelo=%s pdv_origem=%s where id = %s'
SQL_CRIA_PRODUTO_OPTICA = 'INSERT into produtos_optica (subgrupo, marca, modelo, pdv_origem) values (%s, %s, %s, %s)'
2 respostas

Oi Everton, tudo certo? Você pode enviar a Traceback (pilha de erros) para que possamos diagnosticar mais fácil o erro?

Claro, aqui está:

File "C:\Users\MussaBAGRE\Dropbox\OCPP\venv\lib\site-packages\flask\app.py", line 1994, in __call__
return self.wsgi_app(environ, start_response)
File "C:\Users\MussaBAGRE\Dropbox\OCPP\venv\lib\site-packages\flask\app.py", line 1985, in wsgi_app
response = self.handle_exception(e)
File "C:\Users\MussaBAGRE\Dropbox\OCPP\venv\lib\site-packages\flask\app.py", line 1540, in handle_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\MussaBAGRE\Dropbox\OCPP\venv\lib\site-packages\flask\_compat.py", line 33, in reraise
raise value
File "C:\Users\MussaBAGRE\Dropbox\OCPP\venv\lib\site-packages\flask\app.py", line 1982, in wsgi_app
response = self.full_dispatch_request()
File "C:\Users\MussaBAGRE\Dropbox\OCPP\venv\lib\site-packages\flask\app.py", line 1614, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\Users\MussaBAGRE\Dropbox\OCPP\venv\lib\site-packages\flask\app.py", line 1517, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\MussaBAGRE\Dropbox\OCPP\venv\lib\site-packages\flask\_compat.py", line 33, in reraise
raise value
File "C:\Users\MussaBAGRE\Dropbox\OCPP\venv\lib\site-packages\flask\app.py", line 1612, in full_dispatch_request
rv = self.dispatch_request()
File "C:\Users\MussaBAGRE\Dropbox\OCPP\venv\lib\site-packages\flask\app.py", line 1598, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "C:\Users\MussaBAGRE\Dropbox\OCPP\views.py", line 155, in lista_produtos_optica
lista = produto_optica_dao.listar_produtos_optica()
File "C:\Users\MussaBAGRE\Dropbox\OCPP\dao.py", line 169, in listar_produtos_optica
produtos_optica = traduz_produtos_optica(cursor.fetchall())
File "C:\Users\MussaBAGRE\Dropbox\OCPP\dao.py", line 208, in traduz_produtos_optica
return list(map(cria_produto_optica_com_tupla(produtos_optica)))
File "C:\Users\MussaBAGRE\Dropbox\OCPP\dao.py", line 207, in cria_produto_optica_com_tupla
return ProdutoOptica(tuplao[1], tuplao[2], tuplao[3], tuplao[4], id=tuplao[0])
IndexError: tuple index out of range