CommencezCommencez gratuitement

Filtrer des données sélectionnées à partir d'une table – avancé

Vous prenez vraiment le rythme ! SQLAlchemy permet aussi d'utiliser des conjonctions comme and_(), or_() et not_() pour construire des filtrages plus complexes. Par exemple, on peut obtenir un ensemble d'enregistrements pour les personnes à New York qui ont 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)

Cette activité fait partie du cours

Introduction aux bases de données en Python

Voir le cours

Instructions de l’exercice

  • Importez and_ du module sqlalchemy.
  • Sélectionnez tous les enregistrements de la table census.
  • Ajoutez une clause where pour filtrer tous les enregistrements dont state est 'California' et dont sex n'est pas 'M'.
  • Exécutez stmt dans la connexion et parcourez le ResultProxy pour afficher les colonnes age et sex de chaque enregistrement.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# 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(____, ____)
Modifier et exécuter le code