如何智能地合并Django数据库?

时间:2017-04-06 21:27:40

标签: python django postgresql django-models django-database

我有一个包含5个不同PostgreSQL数据库的Django项目。该项目在模型路由方面被抢先分开,但事实证明存在问题,所以现在我试图扭转它。不幸的是,空的,迁移的表有一些重叠,所以pg_dump是不可能的。看起来django-dumpdb可能适合我的需求,但它不会处理每个数据库的导出/导入。此外,Django的dumpdata / loaddata正在从生成的灯具中安装0条记录。关于合并数据的最不痛苦的方法,我可以提出一些建议吗?

2 个答案:

答案 0 :(得分:1)

总是来自django的转储数据,这很容易使用。

或者您可以手动执行此操作:

  • 如果2个数据库共享相同的数据(它们是镜像到另一个)和相同的表结构,你可以从django运行一个syncdb来创建新的表结构,然后转储和导入(我假设你'使用mysql,但一般的想法是一样的)旧的数据库进入新的
  • 如果两个数据库共享不同的数据(仍然具有相同的结构),您应该导入两个数据库的每一行:这样,您将保持关系等,但您将更新您的唯一ID sole db。
  • 如果两个数据库的数据和结构都不同,那么你必须运行两个sincdb和两个导入,但这似乎不是你的情况

答案 1 :(得分:0)

我遇到了类似的问题,两个相同的网站共享几种模型,但是对象不同。不幸的是,通过natural_key合并它们是不可能的。

为了将来自第二个网站的所有模型附加到第一个网站,我必须实现一个类似于loaddata的新django命令。

您可以在本要点中找到解决方案的代码:

https://gist.github.com/MattFanto/f6c0ee0bc392da1d0d90f28efdb77e40