Progetto di un bilanciatore applicativo documentale

Progetto di un bilanciatore applicativo documentale

Marzo 12, 2024 0 Di Ruggero Grando

LA CLASSE GLOBALIDGENERATOR

Questa classe viene utilizzata per “staccare” un numero di ID univoco del documento che verrà caricato sul bilanciatore. Di seguito trovate il codice completo.

import sqlite3

class GlobalIDGenerator:
    def __init__(self, db_path):
        print("Classe GlobalIDGenerator")
        print(db_path)
        self.conn = sqlite3.connect(db_path)
        self.cursor = self.conn.cursor()
        self.initialize_db()

    def initialize_db(self):
        # Crea una tabella per memorizzare l'ultimo ID utilizzato
        self.cursor.execute('''
            CREATE TABLE IF NOT EXISTS id_counter (
                last_id INTEGER
            )
        ''')
        # Inizializza il contatore se è la prima volta
        self.cursor.execute('SELECT last_id FROM id_counter')
        if self.cursor.fetchone() is None:
            self.cursor.execute('INSERT INTO id_counter (last_id) VALUES (0)')
        self.conn.commit()

    def get_next_id(self):
        # Legge l'ultimo ID utilizzato e incrementarlo
        self.cursor.execute('SELECT last_id FROM id_counter')
        last_id = self.cursor.fetchone()[0]
        next_id = last_id + 1

        # Aggiorna il contatore nel database
        self.cursor.execute('UPDATE id_counter SET last_id = ?', (next_id,))
        self.conn.commit()
        return next_id

    def close(self):
        self.conn.close()

Questo codice in Python definisce una classe chiamata GlobalIDGenerator, che ha lo scopo di generare identificativi globali unici (ID) utilizzando un database SQLite.

Il codice inizia importando il modulo sqlite3 con l’istruzione “import sqlite3“, che è utilizzato per interagire con un database SQLite. Ho utilizzato un database SQLite, ma in realtà si possono implementare tutti gli RDBMS conosciuti.

Segue la definizione della classe GlobalIDGenerator. Iniziamo dal metodo init. Questo è il costruttore della classe. Quando viene creata un’istanza di GlobalIDGenerator, questo metodo viene eseguito automaticamente. Accetta un parametro “db_path“, che è il percorso del file di database SQLite. Il metodo crea una connessione al database SQLite specificato, crea un cursore che è utilizzato per eseguire i comandi SQL sul database e chiama il metodo “initialize_db“.

Il metodo “initialize_db” inizializza il database. In particolare, crea una nuova tabella chiamata “id_counter”, se non esiste già, per memorizzare l’ultimo “ID” utilizzato. Controlla se la tabella “id_counter” è vuota. Se è vuota, inserisce il valore 0 come “last_id” iniziale.

Il metodo “get_next_id” è fondamentale. Questo metodo recupera il prossimo ID. In pratica, il codice legge l’ultimo “ID” utilizzato dalla tabella “id_counter“, lo incrementa di un unità per ottenere l'”ID” seguente e aggiorna la tabella “id_counter” con il nuovo “ID” e restituendo come parametro di “return”.

Il metodo “close” chiude la connessione al database SQLite.

Pagina Successiva | Pagina Precedente

No votes yet.
Please wait...

Pagine: 1 2 3 4 5 6 7 8 9 10 11