Filtrar dados selecionados de uma Tabela - Avançado
Você está pegando o jeito! O SQLAlchemy também permite usar conjunções como and_(), or_() e
not_() para construir filtros mais complexos. Por exemplo, podemos obter um conjunto de registros
para pessoas em New York que têm 21 ou 37 anos com o seguinte código:
select([census]).where(
and_(census.columns.state == 'New York',
or_(census.columns.age == 21,
census.columns.age == 37
)
)
)
Uma instrução SQL equivalente seria, por exemplo,
SELECT * FROM census WHERE state = 'New York' AND (age = 21 OR age = 37)
Este exercício faz parte do curso
Introdução a Bancos de Dados em Python
Instruções do exercício
- Importe
and_do módulosqlalchemy. - Selecione todos os registros da tabela
census. - Acrescente uma cláusula where para filtrar todos os registros cujo
stateseja'California'e cujosexnão seja'M'. - Execute
stmtna conexão e itere sobre o ResultProxy para imprimir as colunasageesexde cada registro.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# 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(____, ____)