2012-08-09 70 views
0

我對Django比較陌生,一直想着改變運行項目時使用的數據庫。如何讓Django使用除「默認」之外的其他數據庫?

默認情況下,數據庫'默認'用於運行我的測試項目。但是在將來,我希望能夠定義一個'生產'DATABASES配置並讓它使用它。

在生產環境中,我將無法「manage.py runserver」,因此我無法真正設置設置。

我讀了一點關於「路由」數據庫以使用另一個數據庫,但有沒有一種更簡單的方法,以便我不需要每次我想要使用另一個數據庫時創建一個新的路由器(例如我可以有測試數據庫,生產數據庫和開發數據庫)?

回答

0

的存在,你可以在設置中直接指定什麼。我使用的練習是爲不同環境設置附加設置文件,其中只包含我想更改的設置,例如數據庫設置或緩存設置。我如項目根應用程序將包含在開發環境中的以下文件(注意前導下劃線):

... 
settings.py 
settings_dev.py 
_settings_test.py 
_settings_prod.py 
... 

然後settings.py中我將下面的代碼行添加到開始:

try: 
    from settings_prod import * 
except ImportError: 
    try: 
     from settings_test import * 
    except ImportError: 
     from settings_dev import * 

由於我在開發環境,它只會導入我的settings_dev文件,因爲其他人有一個前導下劃線。

當我部署到生產環境或測試環境時,我會重命名相關文件。用於生產:_settings_prod.py - >settings_prod.py,用於測試:_settings_test.py - >settings_test.pysettings_dev.py基本上可以保持原樣,因爲只有在其他兩個失敗時纔會導入。 您可以簡單地通過結構或其他工具自動部署的最後一步。織物的例子就像run('mv _settings_prod.py settings_prod.py')這樣的重命名。

1

您可以在生產環境中使用不同的settings.py。

或者 - 有點乾淨 - 您可能想要在settings.py旁邊創建一個settings.local.py文件,您可以在其中定義一些特定於當前機器的設置(如DEBUG,DATABASES,MEDIA_ROOT等)。 )並在通用settings.py文件的開頭執行from settings_local import *。當然settings.py不能覆蓋這些導入的設置。

1

爲什麼你需要一個測試數據庫? Django在運行unittest之前自動創建測試數據庫。而且,數據庫路由不適合您的目的,它用於將讀/寫請求路由到不同的數據庫。如果你想使用一個開發數據庫,​​建立一個新的DATABASE配置中,說local_settings.py,並在最後你settings.py,類型

try: 
    from local_settings import * 
except ImportError: 
    pass 
+1

測試環境與運行單元測試有所不同。 – 2012-08-09 07:38:58

相關問題