7

基本上,我试图在 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 导入库(用于高性能内部工具)来访问数据库,但当然在它们之间共享尽可能多的代码尽可能。

有关的:

4

1 回答 1

5

在 Web 上下文之外使用Flask-SQLAlchemy模型是创建 Flask 应用程序并调用

app.test_request_context().push()

这里的重点是您将如何处理“非网络”库。如果在需要使用该库时安装整个 Flask 库不是问题,那么以这种方式使用它完全没有问题。

如果您计划在库数据访问代码中进行性能改进,例如使用不同的会话、并发等,那么您正在修改您的初始代码,因此这是一个完全不同的场景。在这种情况下,纯 SQLAlchemy 方法可能会更好,但它实际上取决于两种模式之间的差异。

通常模型带有方法,并且使用 2 种不同的 ORM 模式(Flask-SQLAlchemy包装模型和纯SQLAlchemy)意味着复制代码。

于 2013-09-03T17:01:01.877 回答