CommencerCommencer gratuitement

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

Afficher le cours

Instructions

  • Importez and_ depuis le module sqlalchemy.
  • Sélectionnez tous les enregistrements de la table census.
  • Ajoutez une clause where pour filtrer tous les enregistrements dont state vaut 'California' et dont sex n’est pas 'M'.
  • Exécutez stmt sur la connexion et itérez sur le ResultProxy pour afficher les colonnes age et sex de 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(____, ____)
Modifier et exécuter le code