0Pricing
Learn AI with Python · Lezione

SQLite con il modulo sqlite3 di Python

Creazione di database e tabelle, INSERT/SELECT/UPDATE, query parametrizzate e gestione delle connessioni.

SQLite con il modulo sqlite3 di Python è una lezione Learn AI with Python gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Learn AI with Python, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Learn AI with Python include 4 lezioni in totale.

Perché usare i database per l'IA?

I file piatti funzionano finché i dati non crescono o finché più parti di un progetto non hanno bisogno degli stessi record. Un database offre query rapide, schemi strutturati e accesso concorrente sicuro.

SQLite è un database basato su file, senza necessità di configurazione, integrato in Python tramite il modulo sqlite3 — perfetto per gli esperimenti di IA e i progetti di piccole dimensioni.

Connettersi con sqlite3.connect

sqlite3.connect apre (o crea) un file di database e restituisce una connessione. Usi :memory: per un database temporaneo in RAM.

import sqlite3

conn = sqlite3.connect("ml.db")   # creates ml.db if missing
print(conn)

Cursor e cursor.execute

Le istruzioni SQL vengono eseguite tramite un cursor ottenuto dalla connessione. cursor.execute(sql) invia un'istruzione al database.

import sqlite3

conn = sqlite3.connect("ml.db")
cur = conn.cursor()
cur.execute("SELECT sqlite_version()")
print(cur.fetchone())

CREATE TABLE IF NOT EXISTS

Definisca una tabella con uno schema. IF NOT EXISTS rende sicuro eseguire ripetutamente l'istruzione: non verrà restituito un errore se la tabella esiste già.

cur.execute("""
CREATE TABLE IF NOT EXISTS experiments (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    accuracy REAL,
    created_at TEXT
)
""")

INSERT con segnaposto

Non costruisca mai SQL usando la formattazione delle stringhe: favorisce l'SQL injection e causa problemi con le virgolette. Usi i segnaposto ? e passi i valori come tupla.

cur.execute(
    "INSERT INTO experiments (name, accuracy, created_at) VALUES (?, ?, ?)",
    ("baseline", 0.82, "2026-05-29"),
)

Inserire molte righe con executemany

executemany inserisce un elenco di tuple con un'unica chiamata efficiente, molto più velocemente di un ciclo con execute.

rows = [
    ("rf", 0.88, "2026-05-29"),
    ("xgb", 0.91, "2026-05-29"),
]
cur.executemany(
    "INSERT INTO experiments (name, accuracy, created_at) VALUES (?, ?, ?)",
    rows,
)

conn.commit() salva le modifiche

Le scritture avvengono all'interno di una transazione e non vengono rese persistenti finché non si chiama conn.commit(). Dimenticarsene è l'errore più comune per chi inizia: i dati scompaiono senza alcun avviso alla chiusura.

conn.commit()   # persist all pending INSERT/UPDATE/DELETE

Eseguire query con fetchall e fetchone

Dopo un'istruzione SELECT, recuperi i risultati:

  • fetchone() — la singola riga successiva
  • fetchall() — tutte le righe rimanenti come elenco di tuple
  • iteri direttamente sul cursor per i risultati più grandi
cur.execute("SELECT name, accuracy FROM experiments")
for row in cur.fetchall():
    print(row)   # ("baseline", 0.82) ...

Filtrare e ordinare

È SQL a svolgere il lavoro più impegnativo: filtri con WHERE, ordini con ORDER BY e limiti con LIMIT. Usi i segnaposto anche per i valori delle query.

cur.execute(
    "SELECT name, accuracy FROM experiments WHERE accuracy > ? ORDER BY accuracy DESC LIMIT 3",
    (0.85,),
)
print(cur.fetchall())

Row factory per l'accesso tramite nome

Per impostazione predefinita, le righe sono tuple. Imposti conn.row_factory = sqlite3.Row per accedere alle colonne tramite il nome, una soluzione molto più leggibile.

import sqlite3

conn = sqlite3.connect("ml.db")
conn.row_factory = sqlite3.Row
cur = conn.cursor()
cur.execute("SELECT * FROM experiments")
row = cur.fetchone()
print(row["name"], row["accuracy"])

Gestori di contesto per la sicurezza

Usando with sulla connessione, viene eseguito automaticamente il commit in caso di successo e il rollback in caso di errore. In combinazione con closing, garantisce la pulizia delle risorse.

import sqlite3
from contextlib import closing

with closing(sqlite3.connect("ml.db")) as conn:
    with conn:   # auto commit/rollback
        conn.execute(
            "INSERT INTO experiments (name, accuracy) VALUES (?, ?)",
            ("svm", 0.79),
        )

Verifica rapida: rendere persistenti le scritture

Ha eseguito diverse istruzioni INSERT, poi ha chiuso la connessione, ma al successivo utilizzo i dati non c'erano più.

Riepilogo: SQLite con sqlite3

Ora può usare un vero database da Python:

  • sqlite3.connect e un cursor
  • CREATE TABLE IF NOT EXISTS per schemi sicuri
  • INSERT con segnaposto ? ed executemany
  • conn.commit() per rendere persistenti le scritture
  • fetchone/fetchall, WHERE/ORDER BY/LIMIT
  • sqlite3.Row e gestori di contesto per un codice ordinato e sicuro

Prossimo argomento: collegare pandas e SQL.

Domande Frequenti

La lezione «SQLite con il modulo sqlite3 di Python» è gratuita?

Sì — il testo completo di «SQLite con il modulo sqlite3 di Python» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Learn AI with Python, passa a CoddyKit PRO. Il corso Learn AI with Python include 4 lezioni in totale.

Cosa imparerò in «SQLite con il modulo sqlite3 di Python»?

Creazione di database e tabelle, INSERT/SELECT/UPDATE, query parametrizzate e gestione delle connessioni. Eserciti Learn AI with Python con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Learn AI with Python?

Non è richiesta alcuna esperienza precedente. Learn AI with Python su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «SQLite con il modulo sqlite3 di Python»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Learn AI with Python?

Sì. Ogni lezione Learn AI with Python include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. SQLite con il modulo sqlite3 di Python
  2. Integrazione tra Pandas e SQL
  3. Archiviazione e interrogazione dei risultati del machine learning
  4. Introduzione ai database vettoriali
← Torna a Learn AI with Python