🚀 Nuova versione beta disponibile! Feedback o problemi? Contattaci

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()