Собрал на основе статей по FastAPI проект-шаблон для быстрого старта веб-приложения с поддержкой SQLAlchemy 2.0. Здесь добавлено минимально необходимое:
- подготовленный набор пакетов зависимостей;
- миграции на alembic с удобной сортировкой файлов;
- готовый пример работы с БД в pytest;
- базовая модель в БД с полями времени создания и обновления записей в таблицах, команды для быстрой установки виртуального окружения, создания и проведения миграций, проверки стиля кода, запуска тестов, запуска приложения;
- настройка для запуска проекта в докере.
За основу была взята статья на хабре, которая в свою очередь является переводом части с более подробной англоязычной статьи. Могло показаться, что этой статьи достаточно, но мне не хватило некоторых кейсов:
- примера создания базовой модели SQLModel;
- примера работы с БД в тестах с моделями SQLmodel;
- наименования миграций для сортировки файлов в каталоге в порядке их добавления;
Пример создания базовой модели SQLModel.
В моделях наследуемых от BaseModel поля created_at и updated_at будут обновляться автоматически.
Пример работы с БД в тестах с моделями SQLmodel.
Для этого следует задать такой conftest.py с фикстурами:
Здесь core - это модуль самого приложения. Данного кода недостаточно, чтобы это заработало после копирования в ваш проект (нужен еще код функции async_engine), но весь код выкладывать не вижу смысла в статье, потому что его можно увидеть на github.
Наименования миграций для сортировки файлов в каталоге в порядке их добавления.
Для этого в файле конфигурации alembic.ini нужно указать такой параметр: