Генерация моделей из базы данных с помощью 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).