我正在使用南数据迁移将数据从一个表移动到另一个表(在django应用之间)
它正在移动所有数据,但问题是它不是重复主键(ID),而是创建一个新的(在新表中)有意义..
但是如何使新表格相同,包括id字段(默认情况下,未在模型中定义)
使用mysql
答案 0 :(得分:3)
使用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')
希望有所帮助。
答案 1 :(得分:1)
有两种基本方法可以做你想做的事情:
我认为第二个更容易,但我不确定你要做什么。如果你已经写过类似
的内容了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()