簡體   English   中英

除了'默認'之外,我如何讓Django使用不同的數據庫?

[英]How do I make Django use a different database besides the 'default'?

我對Django來說相對較新,我想到的一件事就是更改運行項目時將使用的數據庫。

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

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

我讀了一些關於“路由”數據庫以使用另一個數據庫的信息,但是有一個更簡單的方法,這樣我每次有另一個我想要使用的數據庫時都不需要創建一個新的路由器(例如我可以測試數據庫,生產數據庫和開發數據庫)?

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

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

為什么需要測試數據庫? Django在運行unittest之前自動創建測試數據庫。 並且,數據庫路由不適合您的目的,它用於將您的讀/寫請求路由到不同的數據庫。 如果要使用開發數據庫,​​請設置一個新的DATABASE配置,例如local_settings.py ,並在最后一個settings.py中鍵入

try:
    from local_settings import *
except ImportError:
    pass

您無法直接在設置中指定任何內容。 我使用的做法是為不同的環境設置附加設置文件,這些環境只包含我想要更改的設置,例如數據庫設置或緩存設置。 例如,我的項目根應用程序將在開發環境中包含以下文件(請注意前導下划線):

...
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.py settings_dev.py基本上可以保持原樣,因為只有在其他兩個失敗的情況下才會導入。 您可以通過結構或其他工具自動部署的最后一步。 使用fabric的一個示例就像run('mv _settings_prod.py settings_prod.py')用於重命名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM