Member-only story
WebAPI con FastAPI
Version 3: integración con Base de Datos
Continuamos con el ejemplo de una WebAPI completa con FastAPI. En esta entrega veremos como integrar una base de datos.
En la versión 1 vimos como podemos crear rápidamente una API, con un solo archivo.
En la versión 2 refactorizamos el código en capas, para facilitar futuros cambios.
En esta versión vamos a implementar uno de tales cambios: pasaremos de almacenar los datos en una lista en memoria a una base de datos relacional con SQLAlchemy ORM.
Capa de dominio
Haremos un cambio con respecto a los modelos en esta versión. Hasta ahora, hemos usado un modelo Pydantic (heredando de pydantic.BaseModel) como entidad de dominio y modelo de request/response en la api. No hay problema en esto, ya que Pydantic sólo agrega metadatos y funcionalidad de validación/conversión pero el modelo sigue siendo el de un Contacto, con las mismas propiedades que una clase común Python.
Pero ahora tendremos que agregar una capa extra de mapeo para pasar del modelo de objetos al de tablas relacionadas. Esto se hace en SQLAlchemy haciendo que la clase de la entidad herede de una clase base de SQLAlchemy llamada DeclarativeBase. Entonces, tendríamos que tomar como base de nuestras clases de dominio tanto…






