Está acontecendo um erro na linha 52 e eu não estou conseguindo descobrir.
CÓDIGO
import MySQLdb
print('Conectando...')
conn = MySQLdb.connect(user='root', passwd='19052003', host='127.0.0.1', port=3306)
# Descomente se quiser desfazer o banco...
conn.cursor().execute("DROP DATABASE `jogoteca`;")
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)',
[
('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()
ERRO
Traceback (most recent call last):
File "C:/Users/Pichau/PycharmProjects/jogoteca/prepara_banco.py", line 52, in <module>
('Fire Emblem Echoes', 'Estratégia', '3DS'),
File "C:\Users\Pichau\PycharmProjects\jogoteca\venv\lib\site-packages\MySQLdb\cursors.py", line 237, in executemany
self._get_db().encoding)
File "C:\Users\Pichau\PycharmProjects\jogoteca\venv\lib\site-packages\MySQLdb\cursors.py", line 264, in _do_execute_many
rows += self.execute(sql + postfix)
File "C:\Users\Pichau\PycharmProjects\jogoteca\venv\lib\site-packages\MySQLdb\cursors.py", line 209, in execute
res = self._query(query)
File "C:\Users\Pichau\PycharmProjects\jogoteca\venv\lib\site-packages\MySQLdb\cursors.py", line 315, in _query
db.query(q)
File "C:\Users\Pichau\PycharmProjects\jogoteca\venv\lib\site-packages\MySQLdb\connections.py", line 239, in query
_mysql.connection.query(self, query)
MySQLdb._exceptions.OperationalError: (1366, "Incorrect string value: '\\xE7\\xE3o' for column 'categoria' at row 1")
Process finished with exit code 1