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
Sessiontiene traccia della propria unità di lavoro add()prepara le modifiche,commit()le rende persistentiselect()+scalars()leggono gli oggetti;where()applica i filtrisession.get()recupera gli oggetti tramite la chiave primaria; le modifiche edelete()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
- SQLAlchemy Core e ORM a confronto
- Definizione dei modelli
- Query con la Session
- Relazioni e join