Estou conectado ao banco de dados MySQL em Python usando o módulo Python (MySQL Connector) no notebook jupyter. Posso realizar operações, por exemplo, criar uma tabela ou ler dados de uma tabela. No código a seguir, quero criar uma view, mas antes de criar uma view quero ter certeza de que o banco de dados não tem a view, caso tenha, quero eliminá-la.
import mysql.connector as con
try:
connection = con.connect(host = 'localhost',
database='mydb',
user='***', # my user name is also correct
password='****') # my password is correct
create_view_query = """
drop view if exists chicago_public;
create view chicago_public as
select NAME_OF_SCHOOL as school_name,Safety_Icon as afety_rating,
Family_Involvement_Icon as family_rating,
Environment_Icon as environment_rating,
Instruction_Icon as instruction_rating,
Leaders_Icon as leaders_rating,
Teachers_Icon as teacher_rating
from CHICAGO_PUBLIC_SCHOOLS;
"""
cursor = connection.cursor()
cursor.execute(create_view_query)
print("View created succussfully.")
except con.Error as e:
print("Error reading data from MySQL table",e)
finally:
if connection.is_connected():
connection.close()
cursor.close()
print("MySQL connection is closed")
Mas quando executo esta consulta no notebook jupyter, estou recebendo o seguinte erro.
Erro ao ler dados da tabela MySQL 1227 (42000): Acesso negado; você precisa (pelo menos um dos) privilégios SYSTEM_USER para esta operação
Por favor me ajude com isso como resolver este problema. Agradeço antecipadamente.
Você tem várias consultas, então você precisa usar
Use CREATE OR REPLACE para substituir atomicamente a exibição.
Portanto, você não precisa habilitar
multi=True
para a consulta.