如何在两个模块之间共享数据库模型?

Posted

技术标签:

【中文标题】如何在两个模块之间共享数据库模型?【英文标题】:How to share Database models between two modules? 【发布时间】:2017-09-06 13:13:55 【问题描述】:

背景

我目前正在开发一个托管在 AWS Elasticbeanstalk 上的 Python 网络项目。我们有两个可部署的 Web 应用程序。前端烧瓶应用程序和后端烧瓶应用程序。在结构上,这两者在同一个 git 存储库中,但对于部署,每个都是 git 单独存档以生成可以发布到服务器的 .zip。

--project/
   --front/
   --back/

解决方案的两个模块都需要与数据库通信。为此,我选择使用 ORM sqlalchemy。这个 ORM 允许我创建代表数据库中表的模型(python 类)。

问题

我的问题是这样的。我需要能够在两个模块中使用模型。目前,我有在每个子文件夹中保存模型的文件的副本。这可能会导致在保持文件同步方面出现很多问题,而且还会在我的存储库中添加大量重复代码。我希望比我自己更有经验的人能够描述一个更好的解决方案。

【问题讨论】:

【参考方案1】:

您可以添加一个common 文件夹,其中包含所有模型(以及共享库),如下所示:

--project/
   --front/
   --common/
   --back/

然后部署两个文件夹 front/common/ 例如。

通过这样做,您可以将两个文件夹压缩到一个 Zip 文件中,或者使用两个 Zip 文件。

【讨论】:

这似乎是我找到的最好的解决方案,使我的构建/部署过程更长,但值得减少代码重复。 在这种情况下,如何以理智的方式从 common 导入文件?它不是 front 或 back 的子目录,python 通常需要像这样的导入的解决方法,不是吗?

以上是关于如何在两个模块之间共享数据库模型?的主要内容,如果未能解决你的问题,请参考以下文章

在两个不同的 Django 项目之间共享模型

为两个应用程序之间共享的模型创建Gem

如何在两个进程之间共享数据?

你如何在 UIKit 视图控制器和它呈现的 SwiftUI 视图之间共享数据模型?

在 winforms 和 web 应用程序之间共享数据层和模型层的最佳方法

C# 怎样实现两个窗体之间的数据共享?