【问题标题】:Applying django evolution to multiple databases with reference to a base database参考基础数据库,将django进化应用到多个数据库
【发布时间】:2012-02-27 10:34:26
【问题描述】:

我有一个 django 模型,我将其称为基本模型。我创建了一个动态创建新数据库的项目。现在,我发现我必须更改基表中的表模式。如何将此更改更新到所有创建的数据库?

【问题讨论】:

  • “我创建了一个动态创建新数据库的项目” - 停在那里。删除它。
  • 我的意思是新数据库。我有一个基础数据库。对于每个租户,我的项目使用 sync db 命令创建一个新数据库。我的应用程序现在正在生产中,现在我意识到我必须更新所有创建的数据库中的表模式。
  • 说实话,如果您想从一个项目中使用它们,那么用 Django 创建新数据库是一个问题(可能其他数据库只是静态副本?)。如果这样做,那么您的所有数据库都必须列在 DATABASES 字典中。但是动态改变 DATABASES dict 并不是好的编程风格。

标签: django django-evolution


【解决方案1】:

这可能不是您当前问题的真正决定,而是未来问题的决定:一次在所有数据库中更改架构。

您可以自动化该过程。在循环中对所有数据库执行下一步:

from subprocess import call

# get names of your databases in list 'databases' here

for database in databases:
    call( "python ./manage.py syncdb --database={0}".format( database ) )

【讨论】:

  • 这就是我想要的。谢谢.. 让我通过创建一个新命令并使用上面的代码来测试它。
【解决方案2】:

using Django Evolution in your projects

你需要运行:

./manage.py evolve --hint --execute

【讨论】:

  • ./manage.py Evolution --hint --execute 将参考模型更新单个数据库。我必须更新多个数据库。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-31
  • 2011-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多