Cargar tablas automáticamente desde una base de datos
SQLAlchemy puede cargar tablas automáticamente desde una base de datos mediante algo llamado reflexión. La reflexión es el proceso de leer la base de datos y construir los metadatos a partir de esa información. Es lo contrario a crear una Table a mano y resulta muy útil para trabajar con bases de datos existentes.
Para realizar la reflexión, primero tendrás que importar e inicializar un objeto MetaData. Los objetos MetaData contienen información sobre las tablas almacenadas en una base de datos. Durante la reflexión, el objeto MetaData se rellenará automáticamente con la información sobre la tabla reflejada, así que solo necesitamos inicializarlo antes de reflejar llamando a MetaData().
También necesitarás importar el objeto Table del paquete SQLAlchemy. Luego, usarás este objeto Table para leer tu tabla desde el engine, cargar automáticamente las columnas y completar los metadatos. Esto puede hacerse con una sola llamada a Table(): usar el objeto Table de esta manera es muy parecido a pasar argumentos a una función. Por ejemplo, para cargar automáticamente las columnas con el engine, tienes que especificar los argumentos con nombre autoload=True y autoload_with=engine en Table().
Por último, para ver información sobre el objeto que acabas de crear, usarás la función repr(). Para cualquier objeto de Python, repr() devuelve una representación en texto de ese objeto. Para los objetos Table de SQLAlchemy, devolverá la información sobre esa tabla contenida en los metadatos.
En este ejercicio, tu tarea es reflejar la tabla "census" disponible en tu engine en una variable llamada census. Ya hemos pre-rellenado el código para crear el engine que escribiste en el ejercicio anterior.
Este ejercicio forma parte del curso
Introducción a las bases de datos en Python
Instrucciones del ejercicio
- Importa
TableyMetaDatadesdesqlalchemy. - Crea un objeto
MetaData:metadata. - Refleja la tabla
censususando el objetoTablecon los argumentos:- El nombre de la tabla como cadena (
'census'). - Los metadatos que acabas de inicializar.
autoload=True- El engine con el que hacer la carga automática: en este caso,
engine.
- El nombre de la tabla como cadena (
- Imprime los detalles de
censususando la funciónrepr().
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# 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(____)