【问题标题】:Django: Import legacy database data keeping primary keys having an autokeyDjango:导入遗留数据库数据,保持具有自动键的主键
【发布时间】:2021-05-16 21:06:17
【问题描述】:

我正在使用 Django 开发新软件来替换旧软件,并且我所有的新模型都有自增主键。我想从遗留数据库中导入记录并保留其原始主键(用户都知道它们),但我不知道如何使用自动增量主键来做到这一点。

是否可以使用整数主键创建我的模型并将它们更改为自动递增的模型而不会丢失数据?

【问题讨论】:

  • 可以将值插入自增字段。您如何导出/导入数据?从一个数据库到另一个数据库?

标签: django django-models


【解决方案1】:

如果没有auto-increment 功能,可以将IntegerField 作为主键。你可以这样做

id = models.PositiveIntegerField(primary=True)

导入所有数据后,您可以通过将PositiveIntegerField 替换为AutoField 将其转换为AutoIncrement

解决方案 2

您可以在数据导入期间指定行的id,同时具有默认AutoField,它将正确加载数据。所以这里不用担心。

【讨论】:

  • 还有,把IntegerField换成AutoField后,用完最大数后会继续吗?
  • 是的,应该。但是如果不自动通过ALTER TABLE table_name AUTO_INCREMENT = 100; 可以验证并手动设置
猜你喜欢
  • 2016-02-15
  • 2013-08-07
  • 2016-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多