Questa guida spiega come integrare SQLite e i file CSV in Python, coprendo sia gli aspetti base che quelli avanzati. Verranno descritti i passaggi per la creazione di un database, l’inserimento e il recupero dei dati, nonché la lettura e la scrittura dei file CSV. La guida fornirà passaggi facili da seguire per i principianti e permetterà di acquisire competenze utili per una gestione più efficiente dei dati.
Nozioni di base su Python e SQLite
Per usare SQLite con Python, prima di tutto è necessario importare la libreria SQLite. Python include la libreria sqlite3 come parte della libreria standard, che consente di interagire facilmente con il database SQLite.
Importazione della libreria SQLite
Iniziamo importando la libreria sqlite3 nel nostro script Python. Questo ci permette di interagire con il database SQLite.
import sqlite3
Stabilire una connessione al database
Il passo successivo è connettersi al database SQLite. Se il file del database non esiste, verrà creato un nuovo file del database.
# Connettersi al database
conn = sqlite3.connect('example.db')
Creazione di un cursore
Per eseguire le operazioni sul database, è necessario creare un cursore. Il cursore viene utilizzato per eseguire le istruzioni SQL e per recuperare i risultati.
# Creare un cursore
cur = conn.cursor()
Creazione di una tabella
Per creare una tabella, eseguiremo un’istruzione SQL. Come esempio, creeremo una tabella “users” per memorizzare le informazioni sugli utenti.
# Istruzione SQL per creare la tabella
create_table_sql = '''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER
)
'''
# Eseguire l'istruzione SQL
cur.execute(create_table_sql)
Salvare le modifiche nel database
Le modifiche apportate al database devono essere salvate utilizzando il metodo commit().
# Salvare le modifiche
conn.commit()
Chiudere la connessione al database
Quando il lavoro è completato, è importante chiudere la connessione al database per liberare le risorse.
# Chiudere la connessione
conn.close()
In questa sezione, abbiamo introdotto i passaggi fondamentali per lavorare con SQLite in Python. Nella sezione successiva, esploreremo la creazione di un database specifico.
Creazione di un database SQLite
In questa sezione, esploreremo come creare un nuovo database SQLite utilizzando Python. Impareremo a configurare e a eseguire operazioni di base su un database appena creato, utilizzando un esempio di codice.
Creazione di un nuovo database
Per creare un nuovo database SQLite, seguiremo una procedura simile a quella descritta nella sezione precedente, utilizzando sempre la libreria sqlite3.
import sqlite3
# Creare o connettersi al nuovo database 'new_example.db'
conn = sqlite3.connect('new_example.db')
Creazione di un cursore e definizione della tabella
Una volta connessi al database, possiamo creare una tabella all’interno del database. La definizione della tabella avviene tramite un’istruzione SQL.
# Creare un cursore
cur = conn.cursor()
# Definire la tabella
create_table_sql = '''
CREATE TABLE IF NOT EXISTS products (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
price REAL
)
'''
# Eseguire l'istruzione SQL per creare la tabella
cur.execute(create_table_sql)
Creazione di più tabelle
È possibile creare più tabelle in un singolo database. In questo esempio, oltre alla tabella “products”, creiamo anche una tabella “categories”.
# Definire la tabella 'categories'
create_categories_table_sql = '''
CREATE TABLE IF NOT EXISTS categories (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL
)
'''
# Eseguire l'istruzione SQL per creare la tabella 'categories'
cur.execute(create_categories_table_sql)
Verifica della creazione delle tabelle
Per verificare che le tabelle siano state create correttamente, possiamo recuperare l’elenco delle tabelle presenti nel database.
# Ottenere la lista delle tabelle
cur.execute("SELECT name FROM sqlite_master WHERE type='table';")
# Recuperare i risultati e visualizzarli
tables = cur.fetchall()
print("Tabelle nel database:", tables)
Salvataggio delle modifiche e chiusura della connessione
Dopo aver creato le tabelle, è importante salvare le modifiche e chiudere la connessione al database.
# Salvare le modifiche
conn.commit()
# Chiudere la connessione
conn.close()
In questa sezione, abbiamo esplorato come creare un nuovo database SQLite e definire tabelle. Nella sezione successiva, vedremo come inserire dati nel database appena creato.
Inserimento di dati nel database
Questa sezione descrive come inserire dati in un database SQLite appena creato. Verranno mostrati i passaggi per inserire dati singoli o multipli usando Python.
Preparazione all’inserimento dei dati
Prima di inserire i dati, dobbiamo connetterci al database e creare un cursore.
import sqlite3
# Connettersi al database
conn = sqlite3.connect('new_example.db')
cur = conn.cursor()
Inserimento di una singola riga
Usiamo l’istruzione SQL INSERT per inserire una singola riga di dati nella tabella. Qui inseriamo un prodotto nella tabella “products”.
# Dati da inserire
product_data = (1, 'Laptop', 1200.99)
# Istruzione SQL per inserire i dati
insert_product_sql = 'INSERT INTO products (id, name, price) VALUES (?, ?, ?)'
# Eseguire l'istruzione SQL
cur.execute(insert_product_sql, product_data)
Inserimento di più righe in batch
Per inserire più righe in una sola operazione, utilizziamo il metodo executemany().
# Dati da inserire in batch
multiple_products_data = [
(2, 'Smartphone', 799.99),
(3, 'Tablet', 499.99),
(4, 'Monitor', 199.99)
]
# Eseguire l'inserimento batch
cur.executemany(insert_product_sql, multiple_products_data)
Verifica dei dati inseriti
Per verificare che i dati siano stati inseriti correttamente, recuperiamo i dati dalla tabella e li visualizziamo.
# Recuperare i dati
cur.execute('SELECT * FROM products')
# Recuperare i risultati e visualizzarli
rows = cur.fetchall()
for row in rows:
print(row)
Gestione degli errori
Per gestire eventuali errori durante l’inserimento, implementiamo il blocco try-except per gestire gli errori SQL.
try:
# Inserire i dati
cur.execute(insert_product_sql, (5, 'Keyboard', 49.99))
conn.commit()
except sqlite3.Error as e:
print("Si è verificato un errore:", e)
conn.rollback()
Salvataggio delle modifiche e chiusura della connessione
Una volta completato l’inserimento, salviamo le modifiche e chiudiamo la connessione.
# Salvare le modifiche
conn.commit()
# Chiudere la connessione
conn.close()
In questa sezione, abbiamo visto come inserire dati in un database SQLite. Nella sezione successiva, esploreremo come recuperare dati da un database SQLite.
Recupero dei dati dal database
In questa sezione, descriviamo come recuperare i dati da un database SQLite. Impareremo a usare Python per cercare e visualizzare i dati in modo efficiente.
Connessione al database e creazione del cursore
Come sempre, dobbiamo prima connetterci al database e creare un cursore.
import sqlite3
# Connettersi al database
conn = sqlite3.connect('new_example.db')
cur = conn.cursor()
Recupero di tutti i dati
Per recuperare tutti i dati, utilizziamo una query SELECT. In questo caso, recuperiamo tutti i dati dalla tabella “products”.
# Recuperare tutti i dati
cur.execute('SELECT * FROM products')
# Recuperare i risultati
rows = cur.fetchall()
for row in rows:
print(row)
Recupero dei dati con condizioni
Utilizzando una clausola WHERE, possiamo recuperare i dati che soddisfano determinate condizioni. Ad esempio, recuperiamo i prodotti con un prezzo maggiore o uguale a 500 dollari.
# Recuperare i dati con una condizione
cur.execute('SELECT * FROM products WHERE price >= 500')
# Recuperare i risultati e visualizzarli
rows = cur.fetchall()
for row in rows:
print(row)
Recupero di colonne specifiche
Possiamo anche recuperare solo colonne specifiche, come ad esempio il nome del prodotto e il prezzo.
# Recuperare colonne specifiche
cur.execute('SELECT name, price FROM products')
# Recuperare i risultati e visualizzarli
rows = cur.fetchall()
for row in rows:
print(row)
Ordinamento dei dati
Possiamo ordinare i dati utilizzando la clausola ORDER BY. Ad esempio, possiamo ordinare i prodotti per prezzo in ordine crescente.
# Ordinare i dati per prezzo in ordine crescente
cur.execute('SELECT * FROM products ORDER BY price ASC')
# Recuperare i risultati e visualizzarli
rows = cur.fetchall()
for row in rows:
print(row)
Limitare il numero di righe
Possiamo limitare il numero di righe recuperate utilizzando la clausola LIMIT. Ad esempio, recuperiamo solo le prime 2 righe.
# Limitare il numero di righe
cur.execute('SELECT * FROM products LIMIT 2')
# Recuperare i risultati e visualizzarli
rows = cur.fetchall()
for row in rows:
print(row)
Chiusura della connessione
Una volta completato il recupero dei dati, chiudiamo la connessione al database per liberare le risorse.
# Chiudere la connessione
conn.close()
In questa sezione, abbiamo spiegato come recuperare i dati da un database SQLite. Nella sezione successiva, esamineremo come leggere un file CSV con Python.
Lettura di file CSV
In questa sezione, spieghiamo come leggere un file CSV con Python. I file CSV sono un formato comune per la memorizzazione dei dati e possono essere facilmente gestiti tramite la libreria standard di Python.
Importazione del modulo csv
Per lavorare con i file CSV, dobbiamo importare il modulo csv, che fa parte della libreria standard di Python.
import csv
Lettura di un file CSV
Possiamo leggere un file CSV utilizzando il metodo csv.reader. Nell’esempio, leggeremo il file chiamato “sample.csv”.
# Leggere il file CSV
with open('sample.csv', newline='') as csvfile:
csvreader = csv.reader(csvfile)
# Leggere l'intestazione
header = next(csvreader)
print('Header:', header)
# Leggere i dati
for row in csvreader:
print(row)
Ottenere il contenuto del file CSV come lista
Possiamo ottenere il contenuto del file CSV come una lista utilizzando il metodo csv.reader.
# Leggere il file CSV
with open('sample.csv', newline='') as csvfile:
csvreader = csv.reader(csvfile)
# Ottenere i dati come lista
data = list(csvreader)
for row in data:
print(row)
Ottenere il contenuto del file CSV come dizionario
Utilizzando csv.DictReader, possiamo leggere il contenuto del file CSV come un dizionario, dove ogni riga è rappresentata come un dizionario.
# Leggere il file CSV come dizionario
with open('sample.csv', newline='') as csvfile:
csvreader = csv.DictReader(csvfile)
# Leggere i dati
for row in csvreader:
print(row)
Gestione degli errori durante la lettura di un file CSV
Per gestire eventuali errori durante la lettura dei file, implementiamo il blocco try-except.
try:
with open('sample.csv', newline='') as csvfile:
csvreader = csv.reader(csvfile)
# Leggere l'intestazione
header = next(csvreader)
print('Header:', header)
# Leggere i dati
for row in csvreader:
print(row)
except FileNotFoundError:
print("Il file CSV non è stato trovato.")
except Exception as e:
print("Si è verificato un errore:", e)
In questa sezione, abbiamo visto come leggere un file CSV con Python. Nella sezione successiva, esploreremo come inserire i dati di un file CSV in un database SQLite.
Inserimento dei dati di un file CSV in SQLite
Questa sezione esplora come inserire i dati letti da un file CSV in un database SQLite. Impareremo a gestire i dati CSV e a trasferirli in un database SQLite con Python.
Lettura del file CSV
Iniziamo leggendo il file CSV. Utilizzeremo la stessa metodologia descritta nella sezione precedente.
import csv
import sqlite3
# Leggere il file CSV
with open('sample.csv', newline='') as csvfile:
csvreader = csv.reader(csvfile)
header = next(csvreader) # Leggere l'intestazione
data = list(csvreader) # Ottenere i dati come lista
Connessione al database SQLite
Successivamente, ci connettiamo al database SQLite e creiamo un cursore.
# Connettersi al database SQLite
conn = sqlite3.connect('new_example.db')
cur = conn.cursor()
Preparazione della tabella
Assicuriamoci che la tabella per l’inserimento dei dati CSV esista. In questo esempio, utilizziamo la tabella “products”.
# Creare la tabella se non esiste
create_table_sql = '''
CREATE TABLE IF NOT EXISTS products (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
price REAL
)
'''
cur.execute(create_table_sql)
Inserimento dei dati
Ora inseriamo i dati CSV nel database SQLite utilizzando il metodo executemany() per l’inserimento in batch.
# Istruzione SQL per inserire i dati
insert_product_sql = 'INSERT INTO products (id, name, price) VALUES (?, ?, ?)'
# Inserimento dei dati in batch
cur.executemany(insert_product_sql, data)
Verifica dell’inserimento dei dati
Per verificare che i dati siano stati inseriti correttamente, recuperiamo i dati dal database e li visualizziamo.
# Recuperare i dati dal database
cur.execute('SELECT * FROM products')
rows = cur.fetchall()
for row in rows:
print(row)
Gestione degli errori
Implementiamo la gestione degli errori per l’inserimento dei dati, in modo da poter gestire eventuali problemi durante l’operazione.
try:
# Inserimento dei dati in batch
cur.executemany(insert_product_sql, data)
conn.commit()
except sqlite3.Error as e:
print("Si è verificato un errore:", e)
conn.rollback()
Salvataggio delle modifiche e chiusura della connessione
Una volta inseriti i dati, salviamo le modifiche e chiudiamo la connessione al database.
# Salvare le modifiche
conn.commit()
# Chiudere la connessione
conn.close()
In questa sezione, abbiamo esplorato come inserire i dati di un file CSV in un database SQLite. Nella sezione successiva, esploreremo come esportare i dati da un database SQLite in un file CSV.
Esportazione dei dati dal database SQLite in un file CSV
In questa sezione, vedremo come esportare i dati da un database SQLite in un file CSV. Python ci permette di esportare facilmente i dati in formato CSV per l’analisi e la condivisione.
Connessione al database SQLite
Iniziamo con la connessione al database e la creazione del cursore.
import sqlite3
# Connettersi al database SQLite
conn = sqlite3.connect('new_example.db')
cur = conn.cursor()
Recupero dei dati
Recuperiamo i dati da esportare dal database. In questo esempio, recuperiamo tutti i dati dalla tabella “products”.
# Recuperare i dati dal database
cur.execute('SELECT * FROM products')
# Recuperare i risultati e salvarli in una lista
rows = cur.fetchall()
Creazione del file CSV e scrittura dei dati
Successivamente, scriviamo i dati recuperati in un file CSV. Utilizzeremo il metodo csv.writer per farlo.
import csv
# Creare il file CSV
with open('exported_data.csv', 'w', newline='') as csvfile:
csvwriter = csv.writer(csvfile)
# Scrivere l'intestazione
header = ['id', 'name', 'price']
csvwriter.writerow(header)
# Scrivere i dati
csvwriter.writerows(rows)
Gestione degli errori durante l’esportazione
Per gestire eventuali errori durante l’esportazione, implementiamo la gestione degli errori.
try:
# Creare il file CSV
with open('exported_data.csv', 'w', newline='') as csvfile:
csvwriter = csv.writer(csvfile)
# Scrivere l'intestazione
header = ['id', 'name', 'price']
csvwriter.writerow(header)
# Scrivere i dati
csvwriter.writerows(rows)
except Exception as e:
print("Si è verificato un errore durante l'esportazione dei dati:", e)
Verifica dell’esportazione
Per verificare che i dati siano stati esportati correttamente, possiamo leggere il file CSV appena creato e visualizzarne il contenuto.
# Leggere il file CSV per verificare l'esportazione
with open('exported_data.csv', newline='') as csvfile:
csvreader = csv.reader(csvfile)
for row in csvreader:
print(row)
Chiusura della connessione
Una volta completata l’esportazione dei dati, chiudiamo la connessione al database per liberare le risorse.
# Chiudere la connessione
conn.close()
In questa sezione, abbiamo esplorato come esportare i dati da un database SQLite in un file CSV. Nella sezione successiva, vedremo alcuni esempi avanzati di analisi dei dati e creazione di report utilizzando SQLite e CSV.
Esempi avanzati: Analisi dei dati e creazione di report
Questa sezione presenta alcuni esempi concreti di analisi dei dati e creazione di report utilizzando l’integrazione tra SQLite e CSV. Impareremo a eseguire analisi dei dati e ottenere informazioni utili.
Importazione dei dati e preparazione
Iniziamo importando i dati da un file CSV e preparandoli per l’analisi. Successivamente, eseguiremo operazioni di analisi sui dati.
import csv
import sqlite3
# Leggere il file CSV
with open('sample.csv', newline='') as csvfile:
csvreader = csv.reader(csvfile)
header = next(csvreader)
data = list(csvreader)
# Connettersi al database SQLite per l'analisi
conn = sqlite3.connect('analysis_example.db')
cur = conn.cursor()
# Creare la tabella per i dati di vendita
cur.execute('''
CREATE TABLE IF NOT EXISTS sales (
id INTEGER PRIMARY KEY,
product_name TEXT NOT NULL,
quantity INTEGER,
price REAL,
date TEXT
)
''')
# Inserire i dati nella tabella
insert_sql = 'INSERT INTO sales (id, product_name, quantity, price, date) VALUES (?, ?, ?, ?, ?)'
cur.executemany(insert_sql, data)
# Salvare le modifiche
conn.commit()
Analisi dei dati
Utilizzando le funzioni di aggregazione di SQLite, possiamo analizzare i dati. Ad esempio, possiamo calcolare le vendite totali per ogni prodotto.
# Calcolare le vendite totali per prodotto
cur.execute('''
SELECT product_name, SUM(quantity * price) as total_sales
FROM sales
GROUP BY product_name
ORDER BY total_sales DESC
''')
# Recuperare e visualizzare i risultati
results = cur.fetchall()
for row in results:
print(f"Product: {row[0]}, Total Sales: {row[1]}")
Analisi dei dati temporali
Successivamente, analizziamo i dati temporali, come ad esempio calcolare le vendite mensili.
# Calcolare le vendite mensili
cur.execute('''
SELECT strftime('%Y-%m', date) as month, SUM(quantity * price) as monthly_sales
FROM sales
GROUP BY month
ORDER BY month
''')
# Recuperare e visualizzare i risultati
monthly_sales = cur.fetchall()
for row in monthly_sales:
print(f"Month: {row[0]}, Monthly Sales: {row[1]}")
Visualizzazione dei dati
Utilizziamo matplotlib per visualizzare i dati. Ad esempio, possiamo creare un grafico delle vendite mensili.
import matplotlib.pyplot as plt
# Visualizzare le vendite mensili
months = [row[0] for row in monthly_sales]
sales = [row[1] for row in monthly_sales]
plt.plot(months, sales, marker='o')
plt.title('Monthly Sales')
plt.xlabel('Month')
plt.ylabel('Sales')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()
Creazione di report
Creiamo un report che riassuma i risultati dell’analisi, includendo sia il testo che i grafici.
# Creazione del report
report = """
Data Analysis Report
1. Total Sales by Product
------------------
"""
for row in results:
report += f"Product: {row[0]}, Total Sales: {row[1]}\n"
report += "\n2. Monthly Sales\n------------------\n"
for row in monthly_sales:
report += f"Month: {row[0]}, Monthly Sales: {row[1]}\n"
# Salvare il report in un file
with open('sales_report.txt', 'w') as report_file:
report_file.write(report)
Riepilogo
In questa sezione, abbiamo esplorato esempi avanzati di analisi dei dati e creazione di report. Utilizzando SQLite e CSV, abbiamo imparato a raccogliere e analizzare i dati in modo efficiente, a visualizzarli e a creare report dettagliati.
Nella sezione successiva, presenteremo esercizi pratici per mettere in pratica quanto appreso.
Esercizi pratici
Questa sezione propone esercizi pratici per consolidare le conoscenze acquisite. Completa gli esercizi per migliorare le tue abilità nell’integrazione tra SQLite e CSV.
Esercizio 1: Importazione di nuovi dati CSV
Crea un nuovo file CSV (new_products.csv) contenente i dati dei prodotti e importalo nel database SQLite. Crea una nuova tabella per memorizzare i dati.
- Contenuto del file CSV:
id,product_name,quantity,price,date 6,Headphones,150,99.99,2024-01-05 7,Smartwatch,200,199.99,2024-02-10 8,Speaker,100,149.99,2024-03-15
- Passaggi:
- Connettersi al database SQLite
- Creare una nuova tabella (es. new_products)
- Leggere il file CSV e inserire i dati nella nuova tabella
Esercizio 2: Recupero dei dati con condizioni
Recupera i dati dalla tabella sales in base a una condizione specifica, come ad esempio i prodotti con un prezzo maggiore di 100 dollari.
- Condizione:
- Recuperare i prodotti con un prezzo maggiore di 100 dollari
- Visualizzare i risultati
- Passaggi:
- Connettersi al database SQLite
- Usare una query SQL SELECT per recuperare i dati che soddisfano la condizione
- Visualizzare i risultati
Esercizio 3: Aggregazione dei dati e visualizzazione
Calcola le vendite mensili e visualizzale in un grafico a barre. Questo ti aiuterà a visualizzare i trend stagionali delle vendite.
- Passaggi:
- Recuperare i dati delle vendite mensili dal database SQLite
- Usare matplotlib per creare un grafico a barre
- Visualizzare il grafico
Esercizio 4: Esportazione dei dati
Esporta i dati dalla tabella sales in un file CSV. Verifica che i dati siano correttamente esportati leggendo il file CSV risultante.
- Passaggi:
- Connettersi al database SQLite
- Recuperare i dati dalla tabella sales
- Scrivere i dati in un file CSV
- Verificare il contenuto del file CSV
Esercizio 5: Creazione di un report di analisi dei dati
Analizza i dati delle vendite di un periodo specifico (ad esempio, dal gennaio al marzo 2024) e crea un report che includa sia i risultati dell’analisi che un grafico.
- Passaggi:
- Recuperare i dati del periodo specificato dal database SQLite
- Aggregare e analizzare i dati
- Creare un report con i risultati dell’analisi
- Creare un grafico e includerlo nel report
Questi esercizi ti aiuteranno a mettere in pratica le tue competenze di integrazione tra SQLite e CSV, approfondendo l’analisi dei dati e la creazione di report.
Riepilogo
In questa guida abbiamo esplorato come integrare SQLite e i file CSV utilizzando Python. Abbiamo visto come eseguire operazioni di base come la creazione di un database, l’inserimento di dati, la lettura di file CSV, l’analisi dei dati e la generazione di report.
- Creazione di un database SQLite e operazioni di base
- Inserimento e recupero dei dati
- Lettura di file CSV e inserimento dei dati nel database
- Esportazione dei dati e analisi
Acquisendo queste competenze, sarai in grado di gestire i dati in modo più efficiente e di analizzare i dati per ottenere informazioni utili. Completa gli esercizi proposti per affinare ulteriormente le tue capacità.
Continua a migliorare le tue competenze nella gestione e nell’analisi dei dati e applicale in vari progetti. L’integrazione tra Python, SQLite e i file CSV è uno strumento potente per risolvere molte sfide legate ai dati.
Speriamo che questa guida ti aiuti a migliorare le tue competenze nella gestione dei dati e nell’analisi.