从Django到postgres数据库的奇怪迁移。如何保存现有数据

2024-10-05 14:28:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我走了一条奇怪的路,但这是环境的结果。 我必须是单身模型.py通过检查数据库从现有postgres数据库获取。 下一步我修复了一些字段(有一些键的问题),并在这个项目中创建了2个应用程序。所以现在我有3个模型.py(他们分开了模型.py,whitch是由inspect\u db生成的)。managed = True已添加。类具有与数据库中相同的链接和数据类型 接下来,我希望将这些模型集成到exist数据库中。我做迁移,我迁移,最后数据库只有系统django表(auth_,django_migrations等等),没有从我的类(虽然迁移文件是创建的)。所以我试图删除迁移目录并重复makemigrationsmigrate,但终端抛出了:

Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  No migrations to apply.
(forest-venv) user@user-HP-Z800-Workstation ~/MyProjects/forest-venv/lesoved $ python manage.py runserver 8001
Performing system checks...

如果我再次尝试迁移-没有改变。我试图删除django_migrations表中关于我的应用程序的信息-没有结果。在

所以我的问题是: -是否可以将新模型集成到exist数据库中(如果名称、键和格式可以)? -通过迁移后保存exist数据库中的数据的方式,集成是可能的? -如何还移民的可能性?现在不管用了。在


Tags: todjangopy模型auth数据库应用程序环境
1条回答
网友
1楼 · 发布于 2024-10-05 14:28:35

使用现有数据库时的诀窍是确保从一个定义良好的状态开始:首先让Django进入与db完全相同的状态,然后才开始对模型进行更改。以下是步骤:

  1. 检查数据库中是否没有django-migrations表,如果需要,请使用SQL删除它。(注意:我假设这个数据库不是由Django生成的,您正在创建一个新的Django应用程序)
  2. 使用inspectdb创建模型。如果需要,将模型重命名为具有适当的CamelCase。如果重命名会更改数据库中表或列名的模型或字段,请确保设置db_table(模型的Meta选项)和{}(作为字段属性)。在
  3. 运行manage.py makemigrations。检查模型的迁移文件,确保名称与数据库匹配。在
  4. 对于您自己的应用程序,请运行manage.py migrate <app> fake。这将把迁移添加到db中的django-migrations表中,就好像它们在运行一样,而不是实际运行它们。在
  5. 然后运行manage.py migrate来创建django提供的表(authcontenttypesession等…)
  6. 现在你处于一个可以开始改变事情的状态。如果您更改模型并运行makemigrations,它应该只为您的更改创建一个迁移。在

相关问题 更多 >