2012-02-27 48 views
1

我有一个django模型,我将其称为基础模型。我创建了一个动态创建新数据库的项目。现在,我发现我必须对基表中的表模式进行更改。我如何将更改更新到所有创建的数据库?参考基础数据库应用django进化到多个数据库

+2

“我已经创建了一个项目,动态创建新的数据库” - 停在那里。删除它。 – 2012-02-27 10:45:00

+0

我的意思是新的数据库。我有一个基础数据库。对于每个租户,我的项目使用sync db命令创建一个新的数据库。我的应用程序正在生产中,现在我已经意识到我必须在所有创建的数据库中更新表模式。 – 2012-02-27 10:54:53

+0

说实话,如果你想从一个项目中使用它们(可能是其他数据库只是静态拷贝?),用Django创建新的数据库是个问题。如果这样做,那么你所有的数据库都必须在DATABASES字典中列出。但动态更改DATABASES字典不是很好的编程风格。 – sergzach 2012-02-27 11:10:56

回答

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)) 
+0

这就是我一直在寻找的。谢谢..让我通过创建一个新的命令并使用上面的代码来测试它。 – 2012-02-27 11:07:33

0

请参阅using Django Evolution in your projects

你需要运行:

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

./manage.py evolve --hint --execute将参考模型更新单个数据库。我必须更新多个数据库。 – 2012-02-27 10:55:42