如何将对象从“默认”DB复制到Django中具有相同结构的另一个DB

时间:2013-11-22 16:41:32

标签: python mysql database django object

我必须将一些数据从一个MySQL数据库迁移到另一个MySQL数据库,两个凭据都在Django应用程序设置文件中,可访问且一切正常。

我的设置文件是这样的:

DATABASES = {
'default': {
    'NAME': 'app_data',
    'ENGINE': 'django.db.backends.mysql',
    'USER': 'mysql_user',
    'PASSWORD': 's3krit'
},
'prod_old': {
    'NAME': 'old_app_data',
    'ENGINE': 'django.db.backends.mysql',
    'USER': 'mysql_user',
    'PASSWORD': 'priv4te'
}
}

我的想法是:document = Document.objects.using('prod_old').get(id=i)然后仅使用Document()在默认数据库中创建另一个对象而不指定DB(Django将使用默认值)。如果我致电Document().save(),那么来自using('prod_old')的ID会被复制到“默认数据库”吗?

在这种情况下找不到任何清楚的东西! 谢谢你的帮助!

2 个答案:

答案 0 :(得分:0)

试试这个:

python manage.py dumpdata --database=default > old-fixture
python manage.py loaddata --database=pro_old old-fixture

答案 1 :(得分:0)

解决方案是启动类文档justCreatedDocument = Document(),然后调用save()将在数据库中为其提供自动递增的ID,然后您必须保存该ID,复制对象justCreatedDocument = oldDocument并将ID替换为您复制的ID,或者文档将以任意ID保存。

这是我找到的唯一解决方案!