Post Image

Creare e Popolare una Tabella Prodotto in SQLite con SQLAlchemy

Nel mondo della programmazione, la gestione efficace dei dati è fondamentale. Utilizzare un ORM (Object-Relational Mapping) come SQLAlchemy in Python permette di interagire con il database in modo più intuitivo, sfruttando il paradigma orientato agli oggetti. In questo articolo, approfondiremo l'uso di SQLAlchemy per creare una tabella Prodotto su un database SQLite e popolarla con 10 prodotti di esempio.

Questo articolo è pensato per chi ha già familiarità con Python e desidera apprendere come utilizzare SQLAlchemy per la gestione dei database. Se non hai ancora installato SQLAlchemy o configurato l'ambiente di esecuzione, ti consiglio di consultare il mio precedente articolo Guida Completa all'Installazione e Configurazione di SQLAlchemy in Python , dove spiego passo dopo passo come configurare un ambiente virtuale con virtualenv e come utilizzare Docker per un setup rapido e isolato.

Prerequisiti

Ricapitolando, per seguire l'articolo ed eseguire il codice indicato, devi avere:

  • Python installato sul tuo sistema
  • SQLAlchemy installato (se non lo hai installato, segui il mio articolo precedente
  • Conoscenza dei concetti base dei database relazionali (puoi seguire il corso di basedati sul nostro canale youtube) e Python

Implementazione script Python

Una volta che sul tuo sistema hai installato correttamente l'ambiente di sviluppo con Python e SQLAlchemy, passiamo ora a creare e popolare una tabella Prodotto con SQLAlchemy.

La classe Prodotto che andremo a creare avrà come colonne: id, titolo, prezzo e note (valore opzionale). Il modello relativo alla tabella è il seguente:

class Prodotto(Base):
    __tablename__ = 'prodotto'
    id = Column(Integer, primary_key=True, autoincrement=True)
    titolo = Column(String(100), nullable=False)
    prezzo = Column(Float, nullable=False)
    note = Column(String(200))

I prodotti che andremo ad inserire all'interno della tabella sono memorizzati in una lista di dizionari, come segue:

prodotti = [
    {'titolo': 'Prodotto 1', 'prezzo': 10.99, 'note': 'Nota 1'},
    {'titolo': 'Prodotto 2', 'prezzo': 20.99, 'note': 'Nota 2'},
    {'titolo': 'Prodotto 3', 'prezzo': 30.99, 'note': 'Nota 3'},
    {'titolo': 'Prodotto 4', 'prezzo': 40.99, 'note': 'Nota 4'},
    {'titolo': 'Prodotto 5', 'prezzo': 50.99, 'note': None},
    {'titolo': 'Prodotto 6', 'prezzo': 60.99, 'note': None},
    {'titolo': 'Prodotto 7', 'prezzo': 70.99, 'note': 'Nota 7'},
    {'titolo': 'Prodotto 8', 'prezzo': 80.99, 'note': 'Nota 8'},
    {'titolo': 'Prodotto 9', 'prezzo': 90.99, 'note': 'Nota 9'},
    {'titolo': 'Prodotto 10', 'prezzo': 100.99, 'note': 'Nota 10'},
]

Come avrai notato, ogni prodotto è rappresentato da un dizionario che ha tre chiavi allineate ai nomi delle colonne del modello Prodotto. Sfrutteremo questi dizionari per popolare la tabella sfruttando il Dictionary Unpacking, come segue:

prodotto = Prodotto(**prodotto_item)

Dopo aver visto i punti più importanti del nostro script, vediamo l'implementazione completa.

from sqlalchemy import create_engine, Column, Integer, String, Float
from sqlalchemy.orm import declarative_base, sessionmaker

# Definizione della base
Base = declarative_base()

# Definizione del modello Prodotto
class Prodotto(Base):
    __tablename__ = 'prodotto'
    id = Column(Integer, primary_key=True, autoincrement=True)
    titolo = Column(String(100), nullable=False)
    prezzo = Column(Float, nullable=False)
    note = Column(String(200))

# Configurazione del motore di database
engine = create_engine('sqlite:///prodotti.db')

# Creazione della sessione
Session = sessionmaker(bind=engine)
session = Session()

# Creazione delle tabelle
Base.metadata.create_all(engine)

# Lista di prodotti da inserire
prodotti = [
    {'titolo': 'Prodotto 1', 'prezzo': 10.99, 'note': 'Nota 1'},
    {'titolo': 'Prodotto 2', 'prezzo': 20.99, 'note': 'Nota 2'},
    {'titolo': 'Prodotto 3', 'prezzo': 30.99, 'note': 'Nota 3'},
    {'titolo': 'Prodotto 4', 'prezzo': 40.99, 'note': 'Nota 4'},
    {'titolo': 'Prodotto 5', 'prezzo': 50.99, 'note': None},
    {'titolo': 'Prodotto 6', 'prezzo': 60.99, 'note': None},
    {'titolo': 'Prodotto 7', 'prezzo': 70.99, 'note': 'Nota 7'},
    {'titolo': 'Prodotto 8', 'prezzo': 80.99, 'note': 'Nota 8'},
    {'titolo': 'Prodotto 9', 'prezzo': 90.99, 'note': 'Nota 9'},
    {'titolo': 'Prodotto 10', 'prezzo': 100.99, 'note': 'Nota 10'},
]

# Inserimento dei prodotti nel database
for prodotto_data in prodotti:
    prodotto = Prodotto(**prodotto_data)
    session.add(prodotto)

# Commit delle modifiche
session.commit()

print("Tabella Prodotto creata e popolata con successo!")

Esecuzione dello script

Per poter eseguire lo script, in primo luogo salva il codice mostrato sopra in un file, denominato ad esempio crea_e_popola_prodotti.py. Una volta salvato il file, esegui il comando:

python crea_e_popola_prodotti.py

Se l'esecuzione va a buon fine vedrai stampato a video il messaggio Tabella prodotto creata e popolata con successo!. L'esecuzione creerà un file prodotti.db nella cartella corrente; il database sarà popolato con i 10 prodotti previsti. Per accedere al database e vedere i prodotti, esegui:

sqlite3 prodotti.db

# Dal prompt sqlite
sqlite> select * from prodotto;

Conclusione

In questo articolo, abbiamo esplorato come utilizzare SQLAlchemy per creare e popolare una tabella Prodotto in un database SQLite. Abbiamo coperto l'intero processo dalla definizione del modello alla scrittura e esecuzione dello script Python. Seguendo questi passaggi, puoi facilmente gestire i tuoi dati di prodotto in un database relazionale utilizzando SQLAlchemy.