Esercizi Indicizzazione MySQL Python
Codegrind Team•Jul 10 2024
Esercizi sulla gestione delle indicizzazioni in un database MySQL utilizzando le librerie Python mysql-connector-python
e pymysql
. Gli esercizi includono sia approcci sequenziali che orientati agli oggetti (OOP), e si concentrano esclusivamente sulle operazioni di indicizzazione.
Esercizio 1: Creazione Indice con mysql-connector-python (Sequenziale)
Creare un indice su una tabella utilizzando mysql-connector-python.
import mysql.connector
def create_index():
connection = mysql.connector.connect(host='localhost', user='user', password='password', database='testdb')
cursor = connection.cursor()
try:
cursor.execute("CREATE INDEX idx_employee_name ON employees (name)")
connection.commit()
print("Indice creato con successo")
except mysql.connector.Error as error:
print("Errore nella creazione dell'indice:", error)
finally:
cursor.close()
connection.close()
create_index()
Esercizio 2: Eliminazione Indice con PyMySQL (OOP)
Eliminare un indice da una tabella utilizzando PyMySQL in modalità OOP.
import pymysql
class Database:
def __init__(self):
self.connection = pymysql.connect(host='localhost', user='user', password='password', database='testdb')
def drop_index(self):
try:
with self.connection.cursor() as cursor:
cursor.execute("DROP INDEX idx_employee_name ON employees")
self.connection.commit()
print("Indice eliminato con successo")
except pymysql.Error as error:
print("Errore nell'eliminazione dell'indice:", error)
def close(self):
self.connection.close()
db = Database()
db.drop_index()
db.close()
Esercizio 3: Creazione Indice Unico con PyMySQL (Sequenziale)
Scrivere uno script per creare un indice unico su una colonna utilizzando PyMySQL.
import pymysql
def create_unique_index():
connection = pymysql.connect(host='localhost', user='user', password='password', database='testdb')
cursor = connection.cursor()
try:
cursor.execute("CREATE UNIQUE INDEX idx_unique_email ON employees (email)")
connection.commit()
print("Indice unico creato con successo")
except pymysql.Error as error:
print("Errore nella creazione dell'indice unico:", error)
finally:
cursor.close()
connection.close()
create_unique_index()
Esercizio 4: Creazione Indice Composito con mysql-connector-python (OOP)
Utilizzare mysql-connector-python per creare un indice composito su più colonne in modalità OOP.
import mysql.connector
class CompositeIndexDatabase:
def __init__(self):
self.connection = mysql.connector.connect(host='localhost', user='user', password='password', database='testdb')
def create_composite_index(self):
cursor = self.connection.cursor()
try:
cursor.execute("CREATE INDEX idx_name_position ON employees (name, position)")
self.connection.commit()
print("Indice composito creato con successo")
except mysql.connector.Error as error:
print("Errore nella creazione dell'indice composito:", error)
finally:
cursor.close()
def close(self):
self.connection.close()
db = CompositeIndexDatabase()
db.create_composite_index()
db.close()
Esercizio 5: Visualizzare Indici con mysql-connector-python (Sequenziale)
Visualizzare tutti gli indici di una tabella utilizzando mysql-connector-python.
import mysql.connector
def show_indexes():
connection = mysql.connector.connect(host='localhost', user='user', password='password', database='testdb')
cursor = connection.cursor()
try:
cursor.execute("SHOW INDEXES FROM employees")
indexes = cursor.fetchall()
for index in indexes:
print(index)
except mysql.connector.Error as error:
print("Errore nella visualizzazione degli indici:", error)
finally:
cursor.close()
connection.close()
show_indexes()
Esercizio 6: Creazione Indice Full-Text con PyMySQL (OOP)
Creare un indice Full-Text su una colonna utilizzando PyMySQL in modalità OOP.
import pymysql
class FullTextIndexDatabase:
def __init__(self):
self.connection = pymysql.connect(host='localhost', user='user', password='password', database='testdb')
def create_fulltext_index(self):
try:
with self.connection.cursor() as cursor:
cursor.execute("CREATE FULLTEXT INDEX idx_fulltext_description ON products (description)")
self.connection.commit()
print("Indice Full-Text creato con successo")
except pymysql.Error as error:
print("Errore nella creazione dell'indice Full-Text:", error)
def close(self):
self.connection.close()
db = FullTextIndexDatabase()
db.create_fulltext_index()
db.close()
Esercizio 7: Creazione Indice Spaziale con mysql-connector-python (Sequenziale)
Creare un indice spaziale su una colonna utilizzando mysql-connector-python.
import mysql.connector
def create_spatial_index():
connection = mysql.connector.connect(host='localhost', user='user', password='password', database='testdb')
cursor = connection.cursor()
try:
cursor.execute("CREATE SPATIAL INDEX idx_spatial_location ON locations (location)")
connection.commit()
print("Indice spaziale creato con successo")
except mysql.connector.Error as error:
print("Errore nella creazione dell'indice spaziale:", error)
finally:
cursor.close()
connection.close()
create_spatial_index()
Esercizio 8: Verifica Indice con mysql-connector-python (OOP)
Verificare l'esistenza di un indice specifico su una tabella utilizzando mysql-connector-python in modalità OOP.
import mysql.connector
class IndexCheckDatabase:
def __init__(self):
self.connection = mysql.connector.connect(host='localhost', user='user', password='password', database='testdb')
def check_index(self, index_name):
cursor = self.connection.cursor()
try:
cursor.execute("SHOW INDEXES FROM employees WHERE Key_name = %s", (index_name,))
index = cursor.fetchone()
if index:
print(f"Indice {index_name} esiste")
else:
print(f"Indice {index_name} non esiste")
except mysql.connector.Error as error:
print("Errore nella verifica dell'indice:", error)
finally:
cursor.close()
def close(self):
self.connection.close()
db = IndexCheckDatabase()
db.check_index('idx_employee_name')
db.close()
Esercizio 9: Ridenominazione Indice con PyMySQL (Sequenziale)
Rinominare un indice esistente su una tabella utilizzando PyMySQL.
import pymysql
def rename_index():
connection = pymysql.connect(host='localhost', user='user', password='password', database='testdb')
cursor = connection.cursor()
try:
cursor.execute("ALTER TABLE employees RENAME INDEX idx_employee_name TO idx_name")
connection.commit()
print("Indice rinominato con successo")
except pymysql.Error as error:
print("Errore nella ridenominazione dell'indice:", error)
finally:
cursor.close()
connection.close()
rename_index()
Esercizio
10: Creazione Indice con mysql-connector-python (OOP)
Creare un indice su una tabella esistente utilizzando mysql-connector-python in modalità OOP.
import mysql.connector
class IndexCreationDatabase:
def __init__(self):
self.connection = mysql.connector.connect(host='localhost', user='user', password='password', database='testdb')
def create_index(self, table_name, column_name, index_name):
cursor = self.connection.cursor()
try:
query = f"CREATE INDEX {index_name} ON {table_name} ({column_name})"
cursor.execute(query)
self.connection.commit()
print(f"Indice {index_name} creato su {column_name}")
except mysql.connector.Error as error:
print("Errore nella creazione dell'indice:", error)
finally:
cursor.close()
def close(self):
self.connection.close()
db = IndexCreationDatabase()
db.create_index('employees', 'email', 'idx_email')
db.close()