Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

TypeError: unhashable type: 'bytearray'

Esta aparecendo na listagem "Bytearray" e na autenticação apresentou esse erro: "TypeError: unhashable type: 'bytearray'"

1 resposta
solução!

Oi Matheus! Como vai?

O erro "TypeError: unhashable type: 'bytearray'" geralmente ocorre quando você tenta usar um tipo de dado mutável (como um bytearray) em um contexto que exige um tipo imutável, como uma chave de dicionário ou um elemento de um conjunto.

Pelo que você descreveu, parece que o problema está relacionado à autenticação e ao tratamento de dados do banco de dados. Aqui estão algumas coisas que você pode verificar para tentar resolver esse problema:

  1. Verifique o Tipo de Dados: Certifique-se de que os dados que você está tentando usar como chave ou em qualquer contexto que exija um tipo imutável sejam realmente imutáveis. Por exemplo, se você está lidando com senhas, talvez seja necessário converter bytearray para bytes ou str.

  2. Exemplo Prático: Supondo que o problema esteja na autenticação, onde você está comparando a senha do banco de dados com a senha fornecida pelo usuário, você pode fazer algo assim:

    usuario = Usuarios.query.filter_by(nickname=request.form['usuario']).first()
    if usuario and usuario.senha == bytes(request.form['senha'], 'utf-8'):
        # Autenticação bem-sucedida
        # Continue com o processo de login
    else:
        # Falha na autenticação
        # Retorne uma mensagem de erro
    
  3. Debugging: Adicione algumas mensagens de depuração para verificar os tipos de dados que você está lidando:

    print(type(request.form['senha']))  # Verifica o tipo de dado da senha fornecida
    print(type(usuario.senha))  # Verifica o tipo de dado da senha armazenada
    

Essas etapas devem te ajudar a identificar e corrigir o problema. Se o erro persistir, tente fornecer todo o seu projeto, via GitHub ou Drive do Google, para podermos investigar mais a fundo.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.