如何在Django 1.9.x中跨多个服务器轻松切换数据库

时间:2016-08-17 18:10:14

标签: python mysql django database postgresql

我在Django 1.9.x中有一个应用程序,我想使用multidb。

对我可以输入多个数据库的设置进行任何配置,当它在特定服务器上时,它使用正确的数据库。例如:

当我编写localhost时使用默认值,当我输入test serve时,自动切换到testserverdb,当我放入生产服务器使用productiondb时,我尝试使用multi-db documentation但它没有我想要的是这个案例是使用遗留数据库,而不是我的情况。

我是怎么做到的?

2 个答案:

答案 0 :(得分:4)

在您的设置文件中:

try:
    from [app_name].local_settings import *
except ImportError:
    pass

将覆盖您在此local_settings文件中所做的更改。所以现在您可以为localhost,开发或生产提供不同的local_settings文件。您可以单独在这些文件中指定单独的数据库。

答案 1 :(得分:1)

听起来您希望拥有特定于环境的数据库,而不一定是连接到许多数据库的单个应用程序。您可以使用每个环境的自定义设置模块轻松完成此操作。

您可能拥有如下结构:

myproject/
   - settings/
       - __init__.py
       - common.py

您需要将所有常用设置放在common.py下。这将作为所有其他环境设置的基础。从这里开始,您可以使用一些设置来执行您想要的操作,但我建议您使用common.py作为基本设置模块,可以覆盖locall.y

要执行此操作,您可以将DJANGO_SETTINGS_MODULE设置为myproject.settings,并设置在__init__.py

from .common import *

try:
    from .local import *
except ImportError:
    pass

然后在每个环境(生产/开发/等)上,您需要在local.py中包含名为myproject/settings的文件。当您的设置模块加载完毕后,您在local.py文件中添加的任何设置都会覆盖common.py