Генерация моделей из базы данных с помощью FastAPI и SQLAlchemy

У меня есть проект Django, работающий на производстве с PostgreSQL.

Я хочу создать отдельный микросервис FastAPI для выполнения определенной задачи, и я хочу, чтобы он напрямую взаимодействовал с базой данных, которую я подключил к Django.

Я не хочу переписывать все модели в FastAPI, используя pydantic, и в то же время я не хочу совершить ошибку.

В Django есть python manage.py inspectdb возможность автоматически генерировать модели, используя существующую базу данных. Есть ли эквивалент в FastAPI, SQLAlchemy или Pydantic?

Посмотрите на sqlacodegen. Это инструмент, который считывает структуру существующей базы данных и генерирует соответствующий код модели SQLAlchemy.

В настоящее время он предлагает множество встроенных различных генераторов:

  • tables (генерирует только объекты Table, для тех, кто не хочет использовать ORM)
  • declarative (по умолчанию; генерирует классы, наследующие от declarative_base())
  • dataclasses (генерирует модели на основе классов данных; только в версии 1.4+)
  • sqlmodels (генерирует классы моделей для SQLModel)

Declarative используется по умолчанию и генерирует стандартные модели SQLAlchemy, которые вы можете использовать в своем приложении FastAPI. Вы также можете изучить генератор sqlmodels, поскольку SQLModel предназначен для упрощения взаимодействия с базами данных SQL в приложениях FastAPI (и он был создан тем же автором, что и FastAPI).

Вернуться на верх