使用SQLAlchemy ORM、Pydantic和Alembic:每个模型更改都需要反映在三个独立的地方,这违反了DR



所以我正在学习FastAPI,并希望获得更多关系数据库方面的经验。我使用的是SQLAlchemy ORM、Pydantic和Alembic。数据库是Postgres。然而,我遇到的一件事是,当我想向表中添加一列时,我需要更改模型、模式和alembic,以反映这种更改。这难道不是对DRY的巨大违反吗?它容易出错,而且从长远来看很难维护?

查看SQLModel。它试图解决这个确切的问题。您不需要定义数据库模型(SQLAlchemy(和相应的Pydantic模型,而是只定义一个将两者结合在一起的SQLModel

这并没有改变这样一个事实,即您需要验证您的Alembic迁移是否按照预期的想法工作。

这个项目仍处于早期阶段,但我觉得它很有希望。

一般来说,当您开发API时,我看不到在两次定义模式方面有任何的好处。然而,当您必须为模式中的每一个更改重复自己时,会使整个应用程序更容易出错,这是一个明显的缺点。

使用SQLModel,您可能会看到代码行的大幅减少,除非您有非常的特殊要求(例如奇异类型、多层验证/转换、高度复杂/嵌套关系(。

相关内容

  • 没有找到相关文章

最新更新