【问题标题】:How to intelligently merge Django databases?如何智能合并 Django 数据库?
【发布时间】:2017-09-02 03:01:49
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

    您可以在此 gist 中找到解决方案的代码:

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

    【讨论】:

      【解决方案2】:

      django 总是有转储数据,非常好用。

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

      • 如果 2 个数据库共享相同的数据(它们相互镜像)和相同的表结构,您可以从 django 运行一个同步数据库来创建新的表结构,然后转储和导入(我假设您'正在使用mysql,但大体思路是一样的)旧数据库进新数据库
      • 如果两个数据库共享不同的数据(仍然具有相同的结构),您应该导入两个数据库的每一行:这样,您将保留关系等,但您的唯一 ID 会更新为新的唯一分贝。
      • 如果两个数据库在数据和结构上都不同,则必须运行两个 sincdb 和两个导入,但这似乎不是你的情况

      【讨论】:

      • 不幸的是,当我这样做时,没有任何装置被安装到目标数据库中,Django 也没有给我任何错误。
      猜你喜欢
      • 2014-06-25
      • 1970-01-01
      • 2020-09-02
      • 2010-09-18
      • 1970-01-01
      • 2022-10-23
      • 2015-07-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多