0Pricing
Learn AI with Python · Lezione

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 column

Il 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 safe

Un 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 time

Verifica 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 database
  • pd.read_sql(query, engine) per caricare i risultati di una query in un DataFrame
  • df.to_sql(table, engine, index=False, if_exists=...) per scrivere nuovamente i dati
  • Query parametrizzate e chunksize per 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

  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