代码之家  ›  专栏  ›  技术社区  ›  chiggsy

如何确保使用django可以轻松地在dvc上移动数据库更改

  •  4
  • chiggsy  · 技术社区  · 15 年前

    概述

    我在Django建一个网站。我需要允许人们开始添加平面页面,并在管理中设置一些设置。这些变化应该是决定性的,因为这些信息来自客户。但是,我也在开发后端,因此将创建和迁移表。我把这些更改推到中心。

    工具

    django

    git

    south

    postgres

    问题

    我如何确保我的数据库更改从在线网站到我的lappy,以及我如何推动我的数据库更改到现场网站,以便我们有一个最低限度的协调需要?我熟悉Git钩子,所以这个选项正在发挥作用。

    附录:

    我想我知道哪些表可以通过管理员修改。实际上不应该有太多的重叠。在我进一步考虑的时候,真正的危险是 推送会覆盖他们所做的事情的数据。

    谢谢。

    3 回复  |  直到 15 年前
        1
  •  2
  •   Carl Meyer    15 年前

    为了让您的模式更改到达服务器,只需小心地使用south。如果修改了他们可能包含数据的任何表,请确保编写了模式迁移和数据迁移(如有必要),以保留数据的含义。

    为了让他们的更新数据返回给您(这看起来并不重要,但是在开发过程中使用最新的测试数据可能会更好),我通常只使用django fixture和dumpdata和loaddata命令。转储一个fixture并将其提交到您的repo,然后在您的端提交一个loaddata,这已经足够简单了。

    您可以尝试使用Git钩子来实现某些自动化,但是如果您希望实现自动化,我建议您尝试使用类似Fabric的方法。其中大部分内容不需要每次推/拉时都运行(特别是,我通常不想频繁地转储新的数据设备)。

        2
  •  2
  •   GrumpyCanuck    15 年前

    你应该看看南方:

    http://south.aeracode.org/

    在我看来,如果你在做某种持续集成系统,你可能会创建一个触发南方的Git钩子。

    否则,每次进行推送时,都必须自己手动执行迁移步骤。别忘了张贴“网站正在维护”的信息。;)

        3
  •  0
  •   Taras Mankovski    15 年前

    我建议你用 mk-table-sync 将更改从Live Server拉到您的笔记本电脑。 mk table sync需要很多参数,因此可以使用 fabric . 基本上,您将创建一个结构函数,在您想要从服务器中提取的每个平板电脑上执行mk table sync。

    这意味着您不能自己进行数据更改,因为它们将被拉覆盖。

    对实时数据库所做的唯一更改是使用south。您将把代码推送到服务器,然后运行 迁移 更新数据库架构。