16:32 2023/12/24

FastAPI + SQLAlchemy 2.0

Собрал на основе статей по FastAPI проект-шаблон для быстрого старта веб-приложения с поддержкой SQLAlchemy 2.0. Здесь добавлено минимально необходимое:

  • подготовленный набор пакетов зависимостей;
  • миграции на alembic с удобной сортировкой файлов;
  • готовый пример работы с БД в pytest;
  • базовая модель в БД с полями времени создания и обновления записей в таблицах, команды для быстрой установки виртуального окружения, создания и проведения миграций, проверки стиля кода, запуска тестов, запуска приложения;
  • настройка для запуска проекта в докере.

За основу была взята статья на хабре, которая в свою очередь является переводом части с более подробной англоязычной статьи. Могло показаться, что этой статьи достаточно, но мне не хватило некоторых кейсов:

  • примера создания базовой модели SQLModel;
  • примера работы с БД в тестах с моделями SQLmodel;
  • наименования миграций для сортировки файлов в каталоге в порядке их добавления;

Пример создания базовой модели SQLModel.

В моделях наследуемых от BaseModel поля created_at и updated_at будут обновляться автоматически.


Пример работы с БД в тестах с моделями SQLmodel.

Для этого следует задать такой conftest.py с фикстурами:

Здесь core - это модуль самого приложения. Данного кода недостаточно, чтобы это заработало после копирования в ваш проект (нужен еще код функции async_engine), но весь код выкладывать не вижу смысла в статье, потому что его можно увидеть на github.


Наименования миграций для сортировки файлов в каталоге в порядке их добавления.

Для этого в файле конфигурации alembic.ini нужно указать такой параметр:


Оставьте комментарий: