【发布时间】:2026-01-28 16:15:01
【问题描述】:
基本上,我试图在 Flask 应用程序(用于 REST API)和 非 Flask API 之间共享尽可能多的数据库层代码。
在纯 Python API(旨在在非 Web Python 应用程序中导入)和 REST API Flask 守护程序中使用相同的 Flask-SQLAlchemy 层是否是个好主意?
我想换一种说法,虽然我不确定术语,“我如何最好地在 Flask 应用程序和单独的 Python 导入库之间共享数据库模型?”
或者从另一个角度来看,如果您还想与导入库共享 SQL 抽象,那么在 Flask REST API 中使用 Flask-SQLAlchemy 是否有任何意义。那么使用普通的SQLAlchemy会更好吗?
用例:我们有一个包含许多表的大型数据库,并且想要构建一个 REST API(用于客户访问)和一个 Python 导入库(用于高性能内部工具)来访问数据库,但当然共享尽可能多它们之间的代码尽可能。
相关:
【问题讨论】:
-
您有三个选择:1.) 使用 Flask-SQLAlchemy 设置数据库层,并将 Flask 应用程序上下文用作库的一部分。 2.) 创建两个独立的代码库(Flask 和非 Flask)。 3.) 构建一个公共库,但使库的使用依赖于将 SQLAlchemy 会话传递给它(使用依赖注入之类的东西)。在您的 Flask 进程中,使用 Flask 应用程序上下文初始化库。否则,在您的其他程序中设置 SQLA 会话。您选择的这三种方法中的哪一种将非常适合您的环境,因此没有“正确”答案。
-
我正在处理 3.) 但到目前为止找不到好的解决方案...*.com/questions/64320876/…
-
我找到了一个不错的解决方案:*.com/a/64668814/7919597
标签: python sqlalchemy flask flask-sqlalchemy