Django 的 "dumpdata"或 Postgres 的 "pg_dump"?

标签 django database postgresql database-backups dumpdata

我不确定这个问题是否应该发布在 Database Administrators 中' 部分或此处,所以如果我弄错了,请告知。

我有一个基于 Django 的网站,变化不大。我使用 python manage.py dumpdata --all --indent=2 > backup.json 并在需要重新部署或数据库损坏时使用 loaddata 重新加载数据。 (我知道在不排除 authcontent_types 时发生的完整性错误)

因为我在后端使用 PostgreSQL,我使用 pg_dump 是“最佳实践”还是“更明智”,如果出现问题,然后再使用 pg_restore错误还是我需要重新部署?

因此 dumpdata 转储与所选应用程序(和/或模型)关联的所有数据,并且 pg_dump 执行数据库的完整转储。这是同一件事还是存在我错过的根本区别(请注意,我在 DBA 方面的经验为 0)?

我应该选择哪个选项,为什么?

最佳答案

使用 pg_dump 而不是 dumpdata 是最佳实践,也是更明智的做法。

这有很多原因。

  • pg_dump 比 dumpdata 更快,输出更紧凑(特别是使用 -Fc 选项)。

  • 使用 pg_restore 将数据导入回数据库也比 django 的 loaddata 更快。​​

  • pg_restore 可用于任何 postgresql 安装,但 django 及其依赖项必须安装。

  • 最后但同样重要的是,您提到的完整性错误不会发生在 pg_dump/pg_restore 中。

通常 pg_dump 用于转储整个数据库,但是 -t 选项允许您一次转储一个或几个表

关于Django 的 "dumpdata"或 Postgres 的 "pg_dump"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38103438/

相关文章:

javascript - HTML - 使用 JS 根据值更改文本颜色

python - 运行 Heroku Django 教程时出现的问题

xml - OpenERP,用 XML 播种 Many2Many 关系?

sql - PostgreSQL 以毫秒为单位的 postgres 预创建日期的圆形时间戳秒数

java - 如何在准备好的语句java中插入大整数

python - 如何使 Django 中的代码仅在 debug 设置为 true 时运行

django - 使用 {% url ??? %} 在 Django 模板中

MySQL 从数据库分组

sql - 如何有效地将不同的值计入SQL中的不同行?

ruby-on-rails - Rails 和 PostgreSQL 中的时区和夏令时