我有一个具有3个环境(本地,暂存,生产)的Django网站。

生产包含一些我不希望开发人员访问的数据(用户的个人数据和财务数据)。

出于合规性原因,不能选择执行数据库备份还原。

但是,我们在此网站上也有一些内容页面,这些页面由Wagtail CMS管理。

我正在寻找一种在需要时将生产数据(仅某些模型,特别是wagtail页面)同步回Staging和Developers本地环境的方法。

理想情况下,我将拥有一个可在另一个环境中运行以复制数据的管理命令:

示例:./manage.py sync_from_prod BlogPost这将在本地或暂存环境中找到所有丢失的博客文章,并在数据库中创建它们。我找不到针对Wagtail或Django这样做的任何库。

这似乎是一个常见问题,我很惊讶地发现没有Stackoverflow问题或解决此问题的开源库。

如果不存在,我可能会尝试编写自己的django-model-sync(找到了这个项目,但是已经3年了,并且兼容django 1.7,而我使用的是python3 django 1.11)

为了管理安全性,例如,开发人员可以使用一个 secret 来访问生产API(通过ssl公开数据)

最佳答案

您可以对要复制的模型使用dumpdata命令。

在生产命令./manage.py dumpdata app_name.model_name > model_name.json中使用。这会将所选数据库表的所有数据保存在model_name.json文件中。
然后,在本地或阶段服务器上使用loaddata对此文件进行操作:./manage.py loaddata model_name.json

您可以在这里阅读更多有关此的信息:https://the-bosha.ru/2016/06/29/django-delaem-damp-bazy-dannykh-i-vosstanavlivaem-iz-nego-s-dumpdata-i-loaddata/
(仅限俄语说明)

09-04 00:54
查看更多