使用 FastAPI 和 SQLAlchemy 从数据库生成模型

Kai*_* B. 2 python django postgresql sqlalchemy fastapi

我有一个使用 PostgreSQL 在生产环境中运行的 Django 项目。

我想启动一个单独的 FastAPI 微服务来执行特定任务,并且希望它直接与我与 Django 连接的数据库进行通信。

我不想使用pydantic重写FastAPI中的所有模型,同时我也不想犯错误。

在 Django 中,可以python manage.py inspectdb使用现有数据库自动生成模型。FastAPI、SQLAlchemy 或 Pydantic 中是否有等效项?

Jos*_*osh 5

看看sqlacodegen。它是一个读取现有数据库结构并生成适当的 SQLAlchemy 模型代码的工具。

目前它提供了多种内置不同的生成器:

  • 表(仅生成 Table 对象,对于那些不想使用 ORM 的人)
  • 声明式(默认值;生成从 declarative_base() 继承的类)
  • 数据类(生成基于数据类的模型;仅限 v1.4+)
  • sqlmodels(为SQLModel生成模型类)

声明式是默认设置,并生成可在 FastAPI 应用程序中使用的标准 SQLAlchemy 模型。您还可以探索sqlmodels生成器,因为 SQLModel 旨在简化与 FastAPI 应用程序中的 SQL 数据库的交互(它是由与 FastAPI 相同的作者创建的)。