1
resposta

Execute e Registro de Usuarios

Estou tentando fazer um registro de usuários usando a mesma lógica de interação com o Banco que foi usada e deu certo com a manipulação da tabela jogo, só que estou tendo um problema com o execute na hora de rodar a query.

Fiz uma outra tela para me dar a lista dos Usuarios, assim como foi feito com os jogos, para que quando tivesse sido efetuada a inserção no banco, eu já tivesse a resposta .

Bom, tudo funcionando perfeito, puxei os dados do banco e agrupei .

Só que na hora de adicionar usuarios o problema começou, usei praticamente a mesma lógica da função salvar tirando o if, criei uma query chamada SQL_CRIA_USUARIO:

SQL_CRIA_USUARIO = 'INSERT into usuario(id, nome, senha) values (%s, %s, %s)'

Já o método ficou assim:

    def novo_usuario(self, usuario):
        cursor = self.__db.connection.cursor()
        cursor.execute(SQL_CRIA_USUARIO, (usuario.id, usuario.nome, usuario.senha))
    self.__db.connect.commit()

Toda a verificação para ver se já existe e etc... fiz externo ao banco e testei antes de integrar e está tudo funcionando ok, o objeto vem certinho para o método implementar.

Segue a parte do arquivo jogoteca.py que chama o método:

@app.route('/novo_usuario', methods=['POST', 'GET'])
def autenticar_novo_usuario():
    id = str(request.form['id'])
    nome = str(request.form['usuario'])
    senha = str(request.form['senha'])
    #FAZER VERIFICAÇÃO DE SENHA DEPOIS !!!!!!!!!!!!!!
    if(usuario_dao.buscar_por_id(request.form['id'])):
        flash("Nome de Identificação já está em uso!")
        return render_template("login.html", registro_usuario=True, titulo="Faça seu registro")
    else:
        new_user = Usuario(id, nome, senha)
        usuario_dao.novo_usuario(new_user)
        return redirect(url_for("users_list"))

Tive uns problemas com a verificação de senha, mas isso é assunto pra outro tópico.

Bom, ao acessar a pagina e fazer o registro não é apresentado nenhum erro, o redirecionamento para a lista dos usuarios acontece e a query não é inserida no banco.

Cheguei a alterar e tentar jogar direto no execute :

cursor.execute('insert into usuario(id, nome, senha) values (%s ,%s , %s)', ("Nick", "Nicholas", "mestra"))

O resultado foi o mesmo, nada é inserido no banco e ele é redirecionado para a lista de usuários e nada acontece.

O resto da aplicação está funcionando tranquilamente, consigo fazer tudo com os jogos, adicionar, modificar, excluir . Mas os usuários está apresentando esse problema que não estou conseguindo saber da onde vem .

Caso queiram ver o código inteiro, está no GitHub, vou deixar o link, não liguem para a bagunça do repositório, estou brincando com ele por conta do curso de Git.

O método novo_usuario e a função autenticar_novo_usuario da rota estão meio bagunçadas porque tentei um monte de coisa e não obtive sucesso.

Segue o link do repositório:

https://github.com/MarcosYaiama/Cursos/tree/master/Python/AULAS/Alura/Python3/Frameworks/Flask%20II

1 resposta

Você já tentou inserir um espaço depois do nome da tabela usuario?

INSERT into usuario (id, nome, senha) values (%s, %s, %s)