SQLite - Python: Una Guida per Principianti

Ciao a tutti, futuri maghi dei database! Sono entusiasta di essere il tuo guida in questo emozionante viaggio nel mondo di SQLite e Python. Come qualcuno che ha insegnato scienze informatiche per anni, posso assicurarti che alla fine di questo tutorial, manipolerai i database come un professionista. Allora, tuffiamoci!

SQLite - Python

Installazione

Prima di iniziare la nostra avventura, dobbiamo assicurarci di avere gli strumenti giusti. La buona notizia è che se hai installato Python (cosa che suppongo tu abbia fatto), hai già SQLite! È incluso con Python, quindi non c'è bisogno di installazioni aggiuntive. Non è conveniente?

API del modulo sqlite3 di Python

Ora, parliamo della stella del nostro show: il modulo sqlite3. Questo modulo è il tuo biglietto per lavorare con i database SQLite in Python. Fornisce un insieme di funzioni e metodi che useremo durante questo tutorial.

Ecco una tabella dei principali metodi che useremo:

Metodo Descrizione
connect() Crea una connessione al database
cursor() Crea un oggetto cursor per eseguire comandi SQL
execute() Esegue un singolo comando SQL
executemany() Esegue un comando SQL contro tutte le sequenze di parametri
commit() Commette la transazione corrente
rollback() Ripristina qualsiasi cambiamento al database dall'ultimo chiamata a commit()
close() Chiude la connessione al database

Non preoccuparti se questi sembrano un po' misteriosi ora. Esploreremo ciascuno di questi in dettaglio man mano che procediamo.

Connessione al Database

Iniziamo connettendoci a un database. È come bussare alla porta della casa dei tuoi dati!

import sqlite3

# Connettiti al database (o crea se non esiste)
conn = sqlite3.connect('my_first_db.db')

print("Connessione al database avvenuta con successo!")

# Non dimenticare di chiudere la connessione quando hai finito
conn.close()

In questo esempio, stiamo importando il modulo sqlite3 e utilizzando la sua funzione connect() per creare una connessione a un database chiamato 'my_first_db.db'. Se questo database non esiste, SQLite lo creerà per noi. Quanto pensiero!

Creazione di una Tabella

Ora che siamo connessi, creiamo una tabella. Pensa a una tabella come a un foglio di lavoro all'interno del tuo database.

import sqlite3

conn = sqlite3.connect('my_first_db.db')
cursor = conn.cursor()

# Crea una tabella
cursor.execute('''CREATE TABLE IF NOT EXISTS students
(id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER)''')

print("Tabella creata con successo!")

conn.commit()
conn.close()

Qui, stiamo creando una tabella chiamata 'students' con tre colonne: id, name e age. La clausola IF NOT EXISTS è la nostra rete di sicurezza - evita errori se accidentalmente cerchiamo di creare la stessa tabella due volte.

Operazione INSERT

È giunto il momento di aggiungere alcuni dati alla nostra tabella. È come riempire il nostro foglio di lavoro!

import sqlite3

conn = sqlite3.connect('my_first_db.db')
cursor = conn.cursor()

# Inserisci una singola riga di dati
cursor.execute("INSERT INTO students (name, age) VALUES (?, ?)", ("Alice", 22))

# Inserisci più righe di dati
students_data = [("Bob", 19), ("Charlie", 21), ("David", 20)]
cursor.executemany("INSERT INTO students (name, age) VALUES (?, ?)", students_data)

print("Dati inseriti con successo!")

conn.commit()
conn.close()

In questo esempio, stiamo inserendo dati nella nostra tabella 'students'. Utilizziamo execute() per un singolo inserimento e executemany() per più inserimenti. I segni ? sono placeholders per i nostri dati, il che aiuta a prevenire attacchi di SQL injection. La sicurezza prima di tutto!

Operazione SELECT

Ora, recuperiamo i nostri dati. È come chiedere al nostro database di mostrare ciò che ricorda!

import sqlite3

conn = sqlite3.connect('my_first_db.db')
cursor = conn.cursor()

# Seleziona tutte le righe dalla tabella students
cursor.execute("SELECT * FROM students")

# Prendi tutte le righe
rows = cursor.fetchall()

for row in rows:
print(f"ID: {row[0]}, Name: {row[1]}, Age: {row[2]}")

conn.close()

Qui, stiamo selezionando tutte le righe dalla nostra tabella 'students' e stampandole. Il * nella nostra query SQL significa "dammi tutto". È come dire "Apri Sesamo!" al tuo database.

Operazione UPDATE

A volte, dobbiamo cambiare i nostri dati. Aggiorniamo l'età di uno studente:

import sqlite3

conn = sqlite3.connect('my_first_db.db')
cursor = conn.cursor()

# Aggiorna l'età di uno studente
cursor.execute("UPDATE students SET age = ? WHERE name = ?", (23, "Alice"))

print("Dati aggiornati con successo!")

conn.commit()
conn.close()

In questo esempio, stiamo aggiornando l'età di uno studente nella nostra tabella 'students'.

Credits: Image by storyset