使用dumpdata备份django数据库

时间:2018-06-19 14:07:23

标签: django django-models

对于测试,我希望能够保存和恢复应用程序状态。这似乎是一个非常普遍的要求!

我发现我必须做

python manage.py dumpdata --exclude=contenttypes --exclude=auth > sitedata.json

为了使loaddata(在刷新后)不要抱怨唯一性违规等。

目前,这只是我在在线搜索中发现的魔咒。我认为这些解释不容易理解。

我想知道:首先,为什么我必须排除auth?其次,什么是内容类型,以及为什么我必须排除它。我担心的不是我无法做现在需要做的事情,而是我不理解它,并且想知道该程序是否还有其他地方要咬我。

感谢您提供任何信息或链接。

2 个答案:

答案 0 :(得分:1)

我对使用dumpdata进行数据库备份没有那么积极的经验,而且显然不是为此目的而设计的。我最终编写了自己的管理命令,该命令调用PostgreSQL pg_dump命令。我建议直接使用您的数据库转储功能。

答案 1 :(得分:0)

您排除了auth(因为可能存在一些敏感数据,例如用户的电子邮件或密码),因此出于测试目的,并不需要真正备份该数据-测试人员可以创建自己的用户(更多为此-他甚至现在都无法为您的备份用户输入密码-密码已散列)。

“ contenttypes”-这是一个表,通过包含在Django Content Type Framework中而创建。

  

ContentType的实例表示并存储有关以下内容的信息:   项目中安装的模型以及ContentType的新实例是   在安装新模型时自动创建。

它是自动创建并存储的,可以说是所有模型的“类型”,被翻译成简单的数字。这是供高级使用的。我不知道为什么建议在制作转储数据时忽略它。可能是因为该表并未在所有项目或其他项目中使用,因此实际上不需要备份它,可能是为了减少备份文件的大小。或者可能是测试人员在他的计算机上进行迁移时-contenttypes表将已经创建,因此不需要传递该数据。