我正在使用南数据迁移将数据从一个表移动到另一个表(在 django 应用程序之间)
它按预期移动所有数据,但问题是它不是复制主键(ID),而是创建一个新的(在新表中)有意义..
但是我怎样才能使一个新表相同,包括 id 字段(这是默认值,未在模型中定义)
使用 mysql
我正在使用南数据迁移将数据从一个表移动到另一个表(在 django 应用程序之间)
它按预期移动所有数据,但问题是它不是复制主键(ID),而是创建一个新的(在新表中)有意义..
但是我怎样才能使一个新表相同,包括 id 字段(这是默认值,未在模型中定义)
使用 mysql
部分使用创建表,将旧表中的所有内容插入新表LIKE
。部分只是删除新表forwards
。backwards
def forwards(self, orm):
db.execute("CREATE TABLE new_table LIKE old_table")
db.execute("INSERT new_table SELECT * old_table")
def backwards(self, orm):
db.drop_table('new_table')
希望有帮助。
有两种基本方法可以做你想做的事情:
我认为第二个更容易,尽管我不确定您要做什么。如果你已经在写类似的东西
for a in A.objects.all():
b = B(attr1 = a.attr1, ...)
b.save()
那么你不能简单地写
b = B(id = a.id, attr1 = a.attr1, ...)
如果您使用更自动的方式复制行,请考虑多步骤迁移方法: 1. 将模型 A 和 B 编写为:
class A(model):
real_data = CharField()
class B(model):
real_data = CharField()
fake_id = IntegerField(primary_key=True)
id = IntegerField()