ComeçarComece de graça

Selecionando dados de uma tabela com SQLAlchemy

Excelente trabalho até aqui! Agora é hora de criar sua primeira instrução de seleção usando SQLAlchemy. O SQLAlchemy oferece uma forma “Pythônica” de interagir com bancos de dados. No último exercício, ao usar SQL puro, você consultou o banco diretamente. Já com o SQLAlchemy, você faz isso por meio de um objeto Table, e o SQLAlchemy se encarrega de traduzir sua consulta para uma instrução SQL apropriada. Assim, em vez de lidar com diferenças entre dialetos específicos de SQL tradicional, como MySQL ou PostgreSQL, você pode aproveitar o framework Pythônico do SQLAlchemy para agilizar seu fluxo de trabalho e consultar seus dados com mais eficiência. Por isso, vale a pena aprender mesmo que você já conheça SQL tradicional.

Neste exercício, você vai novamente construir uma instrução para consultar todos os registros da tabela census. Desta vez, porém, você usará a função select() do módulo sqlalchemy. Essa função requer uma lista de tabelas ou colunas como único argumento obrigatório: por exemplo, select([my_table]).

Você também vai buscar apenas alguns registros do ResultProxy usando .fetchmany() com um argumento size que especifica quantos registros buscar.

Table e MetaData já foram importados. Os metadados estão disponíveis como metadata e a conexão com o banco de dados como connection.

Este exercício faz parte do curso

Introdução a Bancos de Dados em Python

Ver curso

Instruções do exercício

  • Importe select do módulo sqlalchemy.
  • Faça o reflect da tabela census. Esse código já está escrito para você.
  • Crie uma consulta usando a função select() para recuperar todos os registros da tabela census. Para isso, passe uma lista para select() contendo um único elemento: census.
  • Imprima stmt para ver a consulta SQL real sendo criada. Esse código já foi escrito para você.
  • Busque 10 registros da tabela census e armazene-os em results. Para fazer isso:
    • Use o método .execute() em connection com stmt como argumento para obter o ResultProxy.
    • Use .fetchmany() com o argumento size apropriado em connection.execute(stmt) para obter o ResultSet.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

# Import select
from ____ import ____

# Reflect census table via engine: census
census = Table('census', metadata, autoload=True, autoload_with=engine)

# Build select statement for census table: stmt
stmt = ____

# Print the emitted statement to see the SQL string
print(stmt)

# Execute the statement on connection and fetch 10 records: result
results = ____.____(____).____(size=___)

# Execute the statement and print the results
print(results)
Editar e executar o código