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/DELETEEseguire query con fetchall e fetchone
Dopo un'istruzione SELECT, recuperi i risultati:
fetchone()— la singola riga successivafetchall()— 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.connecte uncursorCREATE TABLE IF NOT EXISTSper schemi sicuriINSERTcon segnaposto?edexecutemanyconn.commit()per rendere persistenti le scritturefetchone/fetchall,WHERE/ORDER BY/LIMITsqlite3.Rowe 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
- SQLite con il modulo sqlite3 di Python
- Integrazione tra Pandas e SQL
- Archiviazione e interrogazione dei risultati del machine learning
- Introduzione ai database vettoriali