Carregando automaticamente tabelas de um banco de dados
O SQLAlchemy pode carregar automaticamente tabelas de um banco de dados usando algo chamado reflection. Reflection é o processo de ler o banco de dados e construir os metadados com base nessas informações. É o oposto de criar uma Table manualmente e é muito útil para trabalhar com bancos de dados existentes.
Para fazer reflection, você primeiro precisa importar e inicializar um objeto MetaData. Objetos MetaData contêm informações sobre as tabelas armazenadas em um banco de dados. Durante a reflection, o objeto MetaData será preenchido automaticamente com informações sobre a tabela refletida, então só precisamos inicializá-lo antes, chamando MetaData().
Você também precisará importar o objeto Table do pacote SQLAlchemy. Em seguida, use esse objeto Table para ler sua tabela a partir do engine, carregar automaticamente as colunas e preencher os metadados. Isso pode ser feito com uma única chamada a Table(): usar o objeto Table dessa maneira é muito parecido com passar argumentos para uma função. Por exemplo, para carregar automaticamente as colunas com o engine, você precisa especificar os argumentos nomeados autoload=True e autoload_with=engine para Table().
Por fim, para ver informações sobre o objeto que você acabou de criar, use a função repr(). Para qualquer objeto Python, repr() retorna uma representação textual desse objeto. Para objetos Table do SQLAlchemy, ela retorna as informações sobre essa tabela contidas nos metadados.
Neste exercício, seu trabalho é refletir a tabela "census" disponível no seu engine em uma variável chamada census. Já deixamos pré-preenchido o código para criar o engine que você escreveu no exercício anterior.
Este exercício faz parte do curso
Introdução a Bancos de Dados em Python
Instruções do exercício
- Importe
TableeMetaDatadesqlalchemy. - Crie um objeto
MetaData:metadata - Reflita a tabela
censususando o objetoTablecom os argumentos:- O nome da tabela como string (
'census'). - Os metadados que você acabou de inicializar.
autoload=True- O engine para carregar automaticamente — neste caso,
engine.
- O nome da tabela como string (
- Imprima os detalhes de
censususando a funçãorepr().
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# Import create_engine, MetaData, and Table
from sqlalchemy import create_engine, ___, ____
# Create engine: engine
engine = create_engine('sqlite:///census.sqlite')
# Create a metadata object: metadata
metadata = ___
# Reflect census table from the engine: census
census = Table(____, ____, autoload=____, autoload_with=____)
# Print census table metadata
print(____)