8
respostas

Erro ao executar arquivo "prepara_banco.py"

O código está gerando a seguinte erro

Traceback (most recent call last):
  File "prepara_banco.py", line 3, in <module>
    conn = MySQLdb.connect(user='root', passwd='admin', host='127.0.0.1', port=9999)
  File "C:\Users\lucas\AppData\Local\Continuum\anaconda3\lib\site-packages\MySQLdb\__init__.py", line 85, in Connect
    return Connection(*args, **kwargs)
  File "C:\Users\lucas\AppData\Local\Continuum\anaconda3\lib\site-packages\MySQLdb\connections.py", line 208, in __init__
    super(Connection, self).__init__(*args, **kwargs2)
_mysql_exceptions.OperationalError: (2006, "Can't connect to MySQL server on '127.0.0.1' (10061)")

Vi outros tópicos no fórum com relação a este mesmo erro, mas não consigui soluciona-lo

8 respostas

Oi Lucas tudo certo ?

O servidor do MySQL estava aberto quando você executou certo ?

Tente mudar a porta para 3000 ou 5000, e veja se conecta

Opa, O servidor não estava aberto não e também creio que o problema não seja a porta.

Tente

db = MySQLdb.connect(host="localhost",
                     user="appuser",
                     passwd="suasenha",
                     db="nomedb)

se precisar por a porta coloque a 3306 que é a padrão geralmente.

Continua com o mesmo erro , mas obrigado.

poste aqui o codigo do prepara_banco.py

import MySQLdb


print('Conectando...')
db = MySQLdb.connect(host="127.0.0.1",
                     user="root",
                     passwd="admin",
                     db="Banco")

# Descomente se quiser desfazer o banco...
db.cursor().execute("DROP DATABASE `jogoteca`;")
db.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;'''

db.cursor().execute(criar_tabelas)

# inserindo usuarios
cursor = db.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
db.commit()
cursor.close()

Executei aqui seu código, faça o seguinte:

1- Drope o database: import MySQLdb

print('Conectando...') db = MySQLdb.connect(host="127.0.0.1", user="root", passwd="admin", db="Banco")

Descomente se quiser desfazer o banco...

db.cursor().execute("DROP DATABASE jogoteca;") db.commit()

2- Retire os caracteres especiais da coluna categoria no comando INSERT

3- Comente o trecho:

#db.cursor().execute("DROP DATABASE `jogoteca`;")
  #db.commit()

E execute o código novamente ! Testei aqui e funcionou

OU tente colocar esta linha:

-- coding: utf-8 --

na primeira linha do prepara_banco.py