Filtrer les données sélectionnées depuis une Table - Avancé
Vous commencez vraiment à prendre le coup ! SQLAlchemy permet aussi d’utiliser des conjonctions comme and_(), or_() et
not_() pour construire des filtres plus complexes. Par exemple, on peut récupérer un ensemble d’enregistrements
pour les personnes à New York âgées de 21 ou 37 ans avec le code suivant :
select([census]).where(
and_(census.columns.state == 'New York',
or_(census.columns.age == 21,
census.columns.age == 37
)
)
)
Une instruction SQL équivalente serait, par exemple :
SELECT * FROM census WHERE state = 'New York' AND (age = 21 OR age = 37)
Cet exercice fait partie du cours
Introduction aux bases de données en Python
Instructions
- Importez
and_depuis le modulesqlalchemy. - Sélectionnez tous les enregistrements de la table
census. - Ajoutez une clause where pour filtrer tous les enregistrements dont
statevaut'California'et dontsexn’est pas'M'. - Exécutez
stmtsur la connexion et itérez sur le ResultProxy pour afficher les colonnesageetsexde chaque enregistrement.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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(____, ____)