ComenzarEmpieza gratis

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

Ver curso

Instrucciones del ejercicio

  • Importa Table y MetaData desde sqlalchemy.
  • Crea un objeto MetaData: metadata.
  • Refleja la tabla census usando el objeto Table con 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.
  • Imprime los detalles de census usando la función repr().

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(____)
Editar y ejecutar código