在多个数据库上同时运行Django迁移

2024-04-25 13:29:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我们正在用django开发一个b2b应用程序。对于每个客户机,我们启动一个新的虚拟服务器机器和一个数据库。所以每个客户机都有一个单独的应用程序安装。(我们这样做是因为根据我们的应用程序的性质,一个客户端可能在某些时候需要大量的资源,而且我们不希望一个客户端的状态影响其他客户端)

每个安装都绑定到一个中央存储库。如果我们更新了应用程序代码,那么当我们推到主分支时,所有安装都会检测到这一点,提取最新版本的代码并重新启动应用程序。在

另一方面,如果我们更新数据库模式,目前需要通过逐个连接到每个数据库实例来手动运行迁移(设置.py文件从不在repo中的外部文件读取数据库设置,我们在安装时手动添加此文件)。在

我们能自动化这个过程吗?i、 给定一个数据库列表,是否可以用一个命令在这些数据库上运行迁移?在


Tags: 文件django服务器机器数据库应用程序客户端客户机
2条回答

If we update the application code, when we push to the master branch, all installations detect this, pull the latest version of the code and restart the application.

我假设您有某种自动化来提取代码并重新启动web服务器。您只需将迁移添加到这个自动化过程中即可。每个服务器的设置.py将从外部文件中读取数据库详细信息并为您运行迁移。在

所以流程应该是这样的:

  • 拔出密码
  • 迁移
  • 收集静电
  • 重新启动web服务器

首先,我会(非常努力地)寻找一种方法来启动一个脚本,就像masnun在客户端建议的那样,非常困难。在

其次,如果这不起作用,那么我将尝试以下方法:

  • 在本地计算机上配置设置变量databases中的所有客户端数据库
  • 确保您可以连接到所有客户机数据库,这可能需要一些修改
  • 然后你运行管理.py为每个客户机数据库迁移带有额外标志的进程database=mydatabase(其中“mydatabase”是配置中提供的句柄)

我没有试过,但我不明白为什么它不起作用。。。在

相关问题 更多 >