0Pricing
Python Academy · Lezione

Query con la Session

Leggere e filtrare i dati

Query con la Session è una lezione Python Academy gratuita su CoddyKit. Questa è la lezione 3 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 Python Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Python Academy include 4 lezioni in totale.

La Session

L'ORM svolge tutto il proprio lavoro attraverso una Session. Gestisce un'unità di lavoro: tiene traccia degli oggetti nuovi, modificati ed eliminati e comunica con il database.

from sqlalchemy import create_engine
from sqlalchemy.orm import Session
engine = create_engine('sqlite:///:memory:')
with Session(engine) as session:
    print('Session open:', session)

Aggiunta di oggetti

session.add() prepara un nuovo oggetto. Nulla viene scritto nel database finché non si esegue commit().

from sqlalchemy.orm import Session
# session.add(user) stages it
# session.commit() writes it
print('add stages, commit saves')

Conferma delle modifiche

session.commit() esegue il flush delle modifiche in sospeso e conferma la transazione, rendendole permanenti.

# with Session(engine) as session:
#     session.add(User(name='Alice'))
#     session.commit()
print('commit persists the work')

Esecuzione di query con select()

SQLAlchemy moderno legge i dati con select(), eseguito tramite la sessione. scalars() restituisce istanze dei modelli.

from sqlalchemy import select
# stmt = select(User)
# users = session.scalars(stmt).all()
print('select(User) then scalars().all()')

Recupero di tutte le righe

session.scalars(select(User)).all() restituisce un elenco di ogni oggetto User nella tabella.

from sqlalchemy import select
# all_users = session.scalars(select(User)).all()
# for u in all_users:
#     print(u.name)
print('all() returns a list of objects')

Filtraggio con where()

Aggiunga una clausola where() per filtrare i risultati. Confronti una colonna mappata utilizzando un normale operatore Python.

from sqlalchemy import select
# stmt = select(User).where(User.age > 28)
# adults = session.scalars(stmt).all()
print('where(User.age > 28) filters rows')

Recupero di un oggetto

session.scalars(stmt).first() restituisce il primo risultato oppure None. one() si aspetta esattamente una riga e genera un'eccezione in caso contrario.

from sqlalchemy import select
# stmt = select(User).where(User.name == 'Alice')
# user = session.scalars(stmt).first()
print('first() = first match or None')

Ricerca tramite chiave primaria

session.get(User, 1) è il modo più rapido per recuperare un singolo oggetto tramite la sua chiave primaria.

# user = session.get(User, 1)
# print(user.name)
print('session.get(Model, pk) fetches by id')

Ordinamento dei risultati

Concateni order_by() per ordinare i risultati. Utilizzi .desc() su una colonna per un ordinamento decrescente.

from sqlalchemy import select
# stmt = select(User).order_by(User.age.desc())
# sorted_users = session.scalars(stmt).all()
print('order_by(User.age.desc()) sorts results')

Aggiornamento di un oggetto

Modifichi un attributo di un oggetto caricato, quindi esegua commit(). La sessione rileva la modifica ed emette un'istruzione UPDATE.

# user = session.get(User, 1)
# user.name = 'Alicia'
# session.commit()  # auto UPDATE
print('Edit attribute, then commit')

Eliminazione di un oggetto

session.delete(obj) contrassegna un oggetto per la rimozione. L'istruzione DELETE viene eseguita al commit successivo.

# user = session.get(User, 1)
# session.delete(user)
# session.commit()  # row removed
print('delete(obj) then commit removes the row')

Verifica rapida

Verifichi le proprie conoscenze sulla sessione.

Riepilogo

Ha imparato a leggere e modificare i dati tramite la Session.

  • La Session tiene traccia della propria unità di lavoro
  • add() prepara le modifiche, commit() le rende persistenti
  • select() + scalars() leggono gli oggetti; where() applica i filtri
  • session.get() recupera gli oggetti tramite la chiave primaria; le modifiche e delete() vengono applicate al commit

Domande Frequenti

La lezione «Query con la Session» è gratuita?

Sì — il testo completo di «Query con la Session» è 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 Python Academy, passa a CoddyKit PRO. Il corso Python Academy include 4 lezioni in totale.

Cosa imparerò in «Query con la Session»?

Leggere e filtrare i dati Eserciti Python Academy 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 Python Academy?

Non è richiesta alcuna esperienza precedente. Python Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Query con la Session»?

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 Python Academy?

Sì. Ogni lezione Python Academy 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. SQLAlchemy Core e ORM a confronto
  2. Definizione dei modelli
  3. Query con la Session
  4. Relazioni e join
← Torna a Python Academy