IniziaInizia gratis

Filtrare i dati selezionati da una Tabella - Avanzato

Stai davvero prendendo la mano! SQLAlchemy ti permette anche di usare congiunzioni come and_(), or_() e not_() per costruire filtri più complessi. Per esempio, possiamo ottenere un insieme di record per le persone a New York che hanno 21 o 37 anni con il seguente codice:

select([census]).where(
  and_(census.columns.state == 'New York',
       or_(census.columns.age == 21,
          census.columns.age == 37
         )
      )
  )

Un'istruzione SQL equivalente sarebbe, per esempio,

SELECT * FROM census WHERE state = 'New York' AND (age = 21 OR age = 37)

Questo esercizio fa parte del corso

Introduzione ai database in Python

Visualizza il corso

Istruzioni dell'esercizio

  • Importa and_ dal modulo sqlalchemy.
  • Seleziona tutti i record dalla tabella census.
  • Aggiungi una clausola where per filtrare tutti i record il cui state è 'California' e il cui sex non è 'M'.
  • Esegui stmt nella connessione e itera sul ResultProxy per stampare le colonne age e sex da ogni record.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# Import and_
from ____ import ____

# Build a query for the census table: stmt
stmt = select(____)

# Append a where clause to select only non-male records from California using and_
stmt = stmt.where(
    # The state of California with a non-male sex
    ____(census.columns.state == ____,
         census.columns.sex != ____
         )
)

# Loop over the ResultProxy printing the age and sex
for result in ____:
    print(____, ____)
Modifica ed esegui il codice