Prólogo
Esta publicación está pensada para los que recién arrancan y los que ya tienen experiencia. Voy a tratar de ser lo más detallista y explicativo posible, ya que esto también me sirve para mí.
Vamos a aprender como desglosar los modelos creados con SQLModel con un patrón de estructuras utilizando herencia, y así evitar las importaciones circulares y tener todo modularizado.
La idea de ésto es también combinarlo con FastAPI, pero primero vamos en partes como diría Jack.

Herramientas
Antes de arrancar, voy a dejar una lista de las librerias/packages/herramientas que vamos a utilizar, para poder encarar el tutorial
- Poetry (para crear el entorno virtual y manejar las dependencias del proyecto, pueden usar el que ustedes quieran, no es necesario ésta herramienta, hay otras como: venv, virtualenv, pipenv, pdm, etc…), pasos de como instalar Poetry aquí.
- SQLModel (obviamente), ésta dependencia ya nos va integrar Pydantic y SQLAlchemy también.
- Pytest (para ir creando de paso un ambiente de pruebas).
- De acá vamos a instalar pytest-asyncio para ejecutar los tests asíncronos.
- Algún IDE de su preferencia, en mi caso voy a usar Pycharm 2024.2
- Alembic (sistema de migraciones creado para SQLAlchemy)
- AIOSqlite (para trabajar con una base de datos en memoria de manera asíncrona, en el ambiente de tests, podríamos usar Docker con PostgreSQL pero seria muy extenso todo y ya el ORM con la base de datos en memoria de SQLite3 nos ahorra trabajo)
- Versión de Python superior o igual a 3.10.x (ésto porque vamos a usar el nuevo tipado que ofrece el lenguaje, aunque voy a dejar notas para versiones anteriores)
Introducción
- Iniciar el proyecto con Poetry y configurarlo
- Crear proyecto
- Instalar dependencias
- Modificando el sistema de carpetas
- Pytest
- Estructura del entorno de pruebas
- Creación y configuración de fixtures
- SQLModel
- Configurar proyecto
- Sesiones de SQLAlchemy