基本上,我试图在 Flask 应用程序(用于 REST API)和非 Flask API 之间共享尽可能多的数据库层代码。
使用相同的 Flask-SQLAlchemy 是个好主意吗?纯 Python API(打算在非 Web Python 应用程序中导入)和 REST API Flask 守护程序中的层?
我想用另一种方式来表达“我如何最好地在 Flask 应用程序和单独的 Python 导入库之间共享数据库模型?”
或者换个角度,用Flask-SQLAlchemy有什么意义吗?在 Flask REST API 中,如果您还想与导入库共享 SQL 抽象。那么使用普通的 SQLAlchemy 会更好吗? ?
用例:我们有一个包含许多表的大型数据库,我们希望同时构建一个 REST API(用于客户访问)和一个 Python 导入库(用于高性能内部工具)来访问数据库,但当然要尽可能多地共享尽可能在它们之间编码。
相关:
最佳答案
在 Web 上下文之外使用 Flask-SQLAlchemy
模型是创建 Flask 应用程序和调用的问题
app.test_request_context().push()
这里的要点是您将如何处理您的“非网络”库。 如果在需要使用库时安装整个 Flask 库没有问题,那么以这种方式使用它完全没有问题。
如果您计划改进库数据访问代码的性能,例如使用不同的 session 、并发等,那么您就是在修改初始代码,因此这是一个完全不同的场景。在这种情况下,纯 SQLAlchemy 方法可能更好,但这实际上取决于两种模式之间的差异。
通常模型带有方法,使用 2 种不同的 ORM 模式(Flask-SQLAlchemy
包装器模型和纯 SQLAlchemy
)意味着重复代码。
关于python - 在 Flask 和非 Flask 程序中使用相同的数据库抽象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18591887/