我有一个Django网站,有3个环境(本地、登台、生产)。在
产品包含一些我不想让开发人员访问的数据(用户的个人数据和财务数据)。在
出于法规遵从性原因,执行数据库备份还原不是一个选项。在
不过,我们也有一些内容页面在这个网站上,我们管理与Wagtail CMS。在
我正在寻找一种方法来同步生产数据(只有一些模型,特别是wagtail页面)回到登台和开发人员本地环境,当他们需要的时候。在
理想情况下,我可以在另一个环境中运行manage命令来复制数据:
示例:./manage.py sync_from_prod BlogPost
这将在本地或登台环境中查找所有丢失的博客文章,并在数据库中创建它们。我找不到任何图书馆为Wagtail或Django这样做。在
这似乎是一个常见的问题,我很惊讶地发现没有Stackoverflow问题或开源库可以解决这个问题。在
如果什么都不存在,我可能会尝试编写我自己的django模型同步(找到这个项目,但是在django1.7和python3django1.11之前是3年前兼容的)
为了管理安全性,开发人员可以使用一个秘密来访问公开数据(通过ssl)的生产API
您可以对要复制的模型使用命令
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/(仅限俄语说明)
您可以在prod中使用
dumpdata
命令(或扩展该命令)来获取blog数据的JSON导出,然后在本地使用loaddata
命令保存到本地环境中。在如何实现工作流完全取决于您,例如,您可能希望将
dumpdata
命令包装在prod上的受保护API中,然后在本地env中创建/运行sync_from_prod
命令来调用该API,并使用从prod导出的JSON数据执行call_command('loaddata', 'data_file.json')
命令伪代码:
相关问题 更多 >
编程相关推荐