1
resposta

ERRO NO PREPARA_BANCO

O erro

Traceback (most recent call last):
  File "C:/Users/Kuran Duran/PycharmProjects/jogoteca/prepara_banco.py", line 34, in <module>
    ('danilo', 'Danilo', 'vegas')
  File "C:\Users\Kuran Duran\Documents\jogoteca\lib\site-packages\MySQLdb\cursors.py", line 237, in executemany
    self._get_db().encoding)
  File "C:\Users\Kuran Duran\Documents\jogoteca\lib\site-packages\MySQLdb\cursors.py", line 264, in _do_execute_many
    rows += self.execute(sql + postfix)
  File "C:\Users\Kuran Duran\Documents\jogoteca\lib\site-packages\MySQLdb\cursors.py", line 186, in execute
    while self.nextset():
  File "C:\Users\Kuran Duran\Documents\jogoteca\lib\site-packages\MySQLdb\cursors.py", line 139, in nextset
    nr = db.next_result()
MySQLdb._exceptions.ProgrammingError: (1007, "Can't create database 'jogoteca'; database exists")

O codigo :

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

# Descomente se quiser desfazer o banco...
conn.commit()

criar_tabelas = '''SET NAMES latin1;
    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)',
      [
            ('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', 'Acao', 'PS4'),
            ('NBA 2k18', 'Esporte', 'Xbox One'),
            ('Rayman Legends', 'Indie', 'PS4'),
            ('Super Mario RPG', 'RPG', 'SNES'),
            ('Super Mario Kart', 'Corrida', 'SNES'),
            ('Fire Emblem Echoes', 'Estrategia', '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()

aparentemente o mysql ja esta instalado, porem na pagina jogateca aparece um erro no mysql, como se não estivesse instalado, ja nas demais paginas como dao e prepara_banco, o mysql não esta sublinhado em erro.

1 resposta

Oii Diógenes, tudo bem?

O erro:

MySQLdb._exceptions.ProgrammingError: (1007, "Can't create database 'jogoteca'; database exists")

Diz que não pode criar o banco porque ele já está criado.

Quando você executa o joteca.py mesmo com esse sublinhado é acusado algum erro? Se sim, qual erro?

Fico no aguardo.