【问题标题】:How to copy objects from the "default" DB to another DB with the same structure in Django如何在Django中将对象从“默认”数据库复制到另一个具有相同结构的数据库
【发布时间】:2013-11-22 16:41:32
【问题描述】:

我必须将一些数据从一个 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() 在默认数据库中创建另一个对象,而不指定数据库(Django 将使用默认值)。如果我打电话给Document().save(),来自using('prod_old') 的ID 会被复制到“默认数据库”吗?

在这种情况下找不到任何明确的信息! 感谢您的帮助!

【问题讨论】:

    标签: python mysql database django object


    【解决方案1】:

    试试这个:

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

    【讨论】:

    • 只要确保两个数据库有相同的表
    • 感谢您的建议,这不是我需要的,我只需要移动 Documents 表上的一些条目,而不是全部,在迁移之前,我必须添加一些额外的数据。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-15
      • 2019-03-17
      • 1970-01-01
      • 2016-01-20
      • 1970-01-01
      • 2012-04-16
      • 2016-06-10
      相关资源
      最近更新 更多