Integrazione tra Pandas e SQL
pd.read_sql(), df.to_sql(), motore SQLAlchemy e interrogazione diretta dei risultati del database nei DataFrame.
Integrazione tra Pandas e SQL è una lezione Learn AI with Python gratuita su CoddyKit. Questa è la lezione 2 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.
pandas incontra SQL
Non deve scegliere tra SQL e pandas: funzionano insieme. Esegua una query su un database ottenendo un DataFrame, trasformi i dati con pandas e scriva nuovamente i risultati.
Il collegamento è costituito da SQLAlchemy e dalle funzioni pandas read_sql e to_sql.
Perché SQLAlchemy?
pandas comunica con i database tramite una connessione o un engine di SQLAlchemy. L'engine astrae il tipo di database, quindi lo stesso codice funziona con SQLite, PostgreSQL, MySQL e altri database: basta cambiare l'URL.
Creare un engine
create_engine accetta un URL di connessione. Lo schema dell'URL identifica il driver del database.
from sqlalchemy import create_engine
engine = create_engine("sqlite:///ml.db")
# Postgres: create_engine("postgresql://user:pass@host:5432/db")Leggere una tabella con pd.read_sql
pd.read_sql esegue una query (o legge una tabella) e restituisce un DataFrame. Passi una stringa SQL e l'engine.
import pandas as pd
df = pd.read_sql("SELECT * FROM experiments", engine)
print(df.head())Leggere con una query filtrata
Lasci che sia il database a eseguire filtraggio e aggregazione, poi passi a pandas un risultato più piccolo. È molto più efficiente che caricare tutto.
df = pd.read_sql(
"SELECT name, accuracy FROM experiments WHERE accuracy > 0.85 ORDER BY accuracy DESC",
engine,
)
print(df)Query parametrizzate
Passi i parametri della query in modo sicuro con l'argomento params, invece di formattare le stringhe.
from sqlalchemy import text
df = pd.read_sql(
text("SELECT * FROM experiments WHERE name = :n"),
engine,
params={"n": "xgb"},
)Scrivere un DataFrame con df.to_sql
df.to_sql(table, engine) scrive un DataFrame in una tabella del database, creandola dai tipi di dati del DataFrame se necessario.
df.to_sql("results", engine, index=False)Il parametro index
Per impostazione predefinita, to_sql scrive l'indice del DataFrame come colonna. Di solito non è ciò che desidera: passi index=False per escluderlo.
df.to_sql("results", engine, index=False) # no extra index columnIl parametro if_exists
if_exists controlla il comportamento quando la tabella esiste già:
"fail"— restituisce un errore (impostazione predefinita)"replace"— elimina e ricrea la tabella"append"— aggiunge righe alla tabella esistente
df.to_sql("results", engine, if_exists="append", index=False)
# Use "replace" to overwrite, "fail" to be safeUn flusso di lavoro completo
Una pipeline tipica: legga i dati grezzi da SQL, li trasformi in pandas e scriva il risultato pulito in una nuova tabella.
import pandas as pd
from sqlalchemy import create_engine
engine = create_engine("sqlite:///ml.db")
raw = pd.read_sql("SELECT * FROM experiments", engine)
raw["accuracy_pct"] = (raw["accuracy"] * 100).round(1)
raw.to_sql("experiments_clean", engine, if_exists="replace", index=False)Letture a blocchi per tabelle grandi
Per le tabelle troppo grandi per essere contenute in memoria, passi chunksize a read_sql per iterare sul risultato in blocchi.
for chunk in pd.read_sql("SELECT * FROM big_table", engine, chunksize=10000):
process(chunk) # handle 10k rows at a timeVerifica rapida: aggiungere righe
Desidera che to_sql aggiunga nuove righe a una tabella esistente senza eliminarla.
Riepilogo: pandas e SQL
Ora può spostare i dati tra pandas e i database:
create_engine(url)per una connessione indipendente dal databasepd.read_sql(query, engine)per caricare i risultati di una query in un DataFramedf.to_sql(table, engine, index=False, if_exists=...)per scrivere nuovamente i dati- Query parametrizzate e
chunksizeper sicurezza e scalabilità
Prossimo argomento: memorizzare e interrogare i risultati degli esperimenti di ML.
Domande Frequenti
La lezione «Integrazione tra Pandas e SQL» è gratuita?
Sì — il testo completo di «Integrazione tra Pandas e SQL» è 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 «Integrazione tra Pandas e SQL»?
pd.read_sql(), df.to_sql(), motore SQLAlchemy e interrogazione diretta dei risultati del database nei DataFrame. 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 2 di 4.
Quanto tempo richiede la lezione «Integrazione tra Pandas e SQL»?
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