2
respostas

erro 2003 ao executar o arquivo prepara_banco

MySQLdb._exceptions.OperationalError: (2003, "Can't connect to MySQL server on '127.0.0.1' (111)")
Conectando...

Process finished with exit code 1

Segui o passo a passo do curso, instalando as libs necessárias indicadas pelo mesmo, mas quando tento conectar no banco, o erro acima é retornado. Estou usando o ubuntu 18.04

2 respostas

Consegui resolver o problema instalando o mysql de volta, e alterando o código de criação do database, como vi aqui no fórum. Instalei o mysql:

sudo apt update

sudo apt install mysql-server

sudo mysql_secure_installation

systemctl status mysql.service (testar se está instalado corretamente)

Depois alterei o arquivo prepara_banco.py para essa foma:

import MySQLdb
print('Conectando...')
conn = MySQLdb.connect(user='root',
                       passwd='XXXXXX!',
                       host='127.0.0.1',
                       port=3306)
conn.cursor().execute("DROP DATABASE IF EXISTS `jogoteca`;")                     # CASO DÊ ERRO RELACIONADO A DATABASE EXISTS
# Descomente se quiser desfazer o banco...
#conn.cursor().execute("DROP DATABASE `jogoteca`;")
#conn.commit()

#Código fornecido pelo Ailton Xavier
criar_tabelas = '''CREATE DATABASE `jogoteca` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
    USE `jogoteca`;
    CREATE TABLE `jogo` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `nome` varchar(50) NOT NULL,
      `categoria` varchar(40) NOT NULL,
      `console` varchar(20) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
    CREATE TABLE `usuario` (
      `id` varchar(8) NOT NULL,
      `nome` varchar(20) NOT NULL,
      `senha` varchar(8) NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;'''

conn.cursor().execute(criar_tabelas)

# inserindo usuarios
cursor = conn.cursor()
cursor.executemany(
      'INSERT INTO jogoteca.usuario (id, nome, senha) VALUES (%s, %s, %s)',
      [
            ('luan', 'Luan Marques', 'flask'),
            ('nico', 'Nico', '7a1'),
            ('danilo', 'Danilo', 'vegas')
      ])

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)',
      [
            ('God of War 4', 'Ação', 'PS4'),
            ('NBA 2k18', 'Esporte', 'Xbox One'),
            ('Rayman Legends', 'Indie', 'PS4'),
            ('Super Mario RPG', 'RPG', 'SNES'),
            ('Super Mario Kart', 'Corrida', 'SNES'),
            ('Fire Emblem Echoes', 'Estratégia', '3DS'),
      ])

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

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

Oii George, como você está? Espero que esteja bem :D

Fico feliz que tenha conseguido solucionar. Muito obrigada por compartilhar sua forma de resolução aqui no fórum, com certeza ajudará outros alunos que enfrentarem o mesmo problema.

Qualquer dúvida estou a disposição.

Abraços e bons estudos!