如何在 Django 中将数据从旧数据库传输到新修改的数据库?

How to transfer data from old database to new modified database in django?

我有旧的 django 项目和新的 django 项目。我从旧的 django 数据库创建了 dump 文件。我还对表格进行了更改并创建了新表格。

现在我想将该转储文件加载到我的新 Django 应用程序中。当我先迁移然后恢复数据或先恢复然后迁移时,我遇到错误。 当我首先进行迁移时,它说 tables already exist.

当我先恢复时,它说 django.db.utils.ProgrammingError: relation "django_content_type" already exists 我使用 migrate --fake 出现错误 未在数据库中创建新表 .

我用了3-4天没成功

如果可以,请帮助我。

PS: 我的数据库是 postgresql

不是直接的,需要一些人工干预,这取决于你以后想做什么

  • 如果数据库中已经存在的 table 具有 stable 设计并且不会更改,或者您可以使用 [=53= 手动进行更改] 语句然后将 managed = False 设置为模型的元数据,这将使 Django 跳过为这些模型

    进行迁移
  • 如果你想在新项目中为所有模型保留迁移的能力,那么这将更加复杂

    1. 删除所有迁移
    2. 您需要让您的模型等同于您的数据库,您可以为 Users
    3. 等新模型设置 managed=False
    4. 运行 python manage.py makemigrations,这将创建初始数据库的结构。
    5. 伪造 运行迁移 python manage.py migrate --fake
    6. 转储django_migrationstable
    7. 的记录
    8. 创建一个新的空迁移(使用 --empty)并使用 migrations.RunSQL()
    9. 添加 django_migrations table 的 SQL 语句
    10. 现在再次伪造,因此您可以跳过新的迁移。
    11. 现在您可以照常使用迁移了。

安装新数据库时,只需运行python manage.py migrate