python - 在 Flask 和非 Flask 程序中使用相同的数据库抽象

标签 python sqlalchemy flask flask-sqlalchemy

基本上,我试图在 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/

相关文章:

SQLAlchemy 使用包含@DECLARE 本地表的原始 SQL 执行

python - Flask-Marshmallow 的 init_app() 真的有必要吗?

下载 zip 文件时的 Python Flask 已损坏

javascript - 将向量绘制为直线

python - Colab - python 代码中的 input() 框太长,所以我需要回滚才能阅读问题

python - SQLAlchemy 在 SQL Server 中插入的无效参数类型错误

python - Utf-8 与 sqlalchemy 在具有 init connect 的数据库上

python - 我无法运行服务器 Django 2.0

python - 参数错误 : relationship expects a class or mapper argument

python - mod_wsgi 测试 wsgi 运行良好,应用程序给出 HTTP 500