Solucionado (ver solução)
Solucionado
(ver solução)
12
respostas

Erro com MySql

Quando tento executar a pasta 'jogoteca.py' aparece esse erro de MySql: http://prntscr.com/ogd9k0

Como resolver?

12 respostas

Eae Elias, tudo certo? Ali no traceback está dizendo que não está conseguindo acessar o seu local host do MySql Server.

No código tem duas partes em que voce deve colocar os seus dados do seu servidor local, como senha, root, porta, etc.

Caso o erro persista, vc consegue colocar os códigos aqui para a gente dar uma olhada?

Ok, mas como faço para saber esses meus dados?

solução!

Você tem o servidor MySQL instalado na sua maquina? Se não, você pode fazer o download nesse link: https://dev.mysql.com/downloads/installer/

A instalação é fácil, é basicamente clicando em next, lá pedirá para você uma senha e dps da instalação você terá seu usuário 'root', senha A que vc escolheu, host '127.0.0.1', porta Geralmente '3306'.

Mas se você ainda não tem o servidor MySql instalado provavelmente você não fez o curso de introdução ao MySQL(Lá ele instala e mostra os passo a passo), que é um dos pré-requesitos do Flask 2: https://cursos.alura.com.br/course/mysql-manipule-dados-com-sql?preRequirementFrom=flask-upload-persistencia-javascript-jquery

Eu altamente recomendo que você faça esse curso antes do de Flask Parte 2, pois você poderá ficar sem entender partes do código, além disso, o curso é rápido, fácil e o instrutor é muito bom.

Fiz tudo que você falou, mas ainda está dando esse erro: http://prntscr.com/ogg5y1

Opa, mas já temos um avanço, agora ele está reconhecendo o localhost, agora ele não está achando o banco de dados jogoteca 2.

Você chegou a executar o prepara_banco.py ? Pois é ele que irá criar a o banco de dados.

E pelo que eu me lembre ele cria um banco de dados jogoteca, e pelo erro, ele está procurando o jogoteca2.

Para testar se esse banco de dados está criado voce pode abrir o MySQL Workbench que é baixado geralmente junto com o MySQL, conforme a image: https://prnt.sc/ogh5tw

Outro problema recorrente que pode dar um problema no futuro é que na parte de adição de jogos tem um jogo na categoria Ação que contém ç e ã que são caracteres especiais que podem dar problema.

Creio que esteja criado: http://prntscr.com/oghnvi

Mas quando executo o prepara_banco dá esse erro: http://prntscr.com/oghoq4

E quando executo o jogoteca2 dá esse: http://prntscr.com/oghpal

E nos arquivos que buscavam o 'jogoteca', coloquei 'jogoteca2'.

Elias, tu consegue colocar os códigos no https://github.com/ e postar aqui para mim conseguir ajudar melhor?

Sobre o primeiro print, ta show, pelo jeito o database ta criado, mas os tables não estão sendo criados. Vou mandar um código que talvez ajude, só preciso q tu coloque teus dados no conn =.

import MySQLdb
print('Conectando...')
conn = MySQLdb.connect(user='root', passwd='SUASENHA', host='127.0.0.1', port=3306)

# Para deletar o jogoteca2 sem table. Comente o código se for executar mais de uma vez
conn.cursor().execute("DROP DATABASE `jogoteca2`;")
conn.commit()

criar_tabelas = '''SET NAMES utf8;
    CREATE DATABASE `jogoteca` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */;
    USE `jogoteca`;
    CREATE TABLE `jogo` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `nome` varchar(50) COLLATE utf8_bin NOT NULL,
      `categoria` varchar(40) COLLATE utf8_bin NOT NULL,
      `console` varchar(20) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
    CREATE TABLE `usuario` (
      `id` varchar(8) COLLATE utf8_bin NOT NULL,
      `nome` varchar(20) COLLATE utf8_bin NOT NULL,
      `senha` varchar(8) COLLATE utf8_bin NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;'''

conn.cursor().execute(criar_tabelas)

# inserindo usuarios
cursor = conn.cursor()
cursor.executemany(
      'INSERT INTO jogoteca.usuario (id, nome, senha) VALUES (%s, %s, %s)',
      [
            ('gustavo', 'Gustavo Steinmetz', 'flask'),
            ('nickname', 'name', 'password'),
            ('marcos', 'Marcos', 'aurelio')
      ])

cursor.execute('select * from jogoteca.usuario')
print(' -------------  Usuários:  -------------')
for user in cursor.fetchall():
    print(user[1])

# inserindo jogos
cursor.executemany(
      'INSERT INTO jogoteca.jogo (nome, categoria, console) VALUES (%s, %s, %s)',
      [
            ('Counter Strike', 'FPS', 'PC'),
            ('Crash Team Racing', 'Corrida', 'PS4'),
            ('Fifa', 'Esporte', 'PS4'),
            ('Empire Earth', 'Estrategia', 'PC'),
            ('Super Mario Kart', 'Corrida', 'SNES'),
            ('World of Warcraft', 'MMORPG', 'PC'),
      ])

cursor.execute('select * from jogoteca.jogo')
print(' -------------  Jogos:  -------------')
for jogo in cursor.fetchall():
    print(jogo[1])

# commitando se não nada tem efeito
conn.commit()
cursor.close()

Só que agora seu database será jogoteca, terá colocar onde tu colocou jogoteca2 somente jogoteca.

Não consegui por no GitHub, mas segue aqui o download dos arquivos que está no meu PC.

https://www.mediafire.com/file/mer8cjprz2giao0/jogoteca2.rar/file

Voce chegou a executar o prepara_banco.py 1vez e dps executar o jogoteca.py?

Antes de executar o jogoteca.py só muda uma config no código

app.config['MYSQL_DB'] = "jogoteca2"

Mudar Para:

app.config['MYSQL_DB'] = "jogoteca"

Dps me diz se deu certo, qualquer coisa manda o erro aqui novamente kkkk

Testei tudo e está tudo funcionando, obrigado pelo seu tempo e paciencia pra ter me ajudado, obrigado!

Que bom! Fico feliz em ter conseguido ajudar =).