0

私はDjangoに比較的慣れていないので、プロジェクトの実行時に使用されるデータベースを変更することを考えています。

デフォルトでは、DATABASES'default'を使用してテストプロジェクトを実行します。しかし、将来的には、「本番」データベース構成を定義して、代わりにそれを使用できるようにしたいと考えています。

実稼働環境では、「manage.py runserver」を実行できないため、実際に設定を行うことはできません。

別のデータベースを使用するためにデータベースを「ルーティング」する方法について少し読みましたが、使用したい別のデータベースがあるたびに新しいルーターを作成する必要がないようにするためのより簡単な方法があります(たとえば、テストを行うことができます)データベース、本番データベース、および開発データベース)?

4

3 に答える 3

1

実稼働環境では、別のsettings.pyを使用できます。

または、少しすっきりしていますが、settings.pyの横にファイルsettings_local.pyを作成して、現在のマシンに固有のいくつかの設定(DEBUG、DATABASES、MEDIA_ROOTなど)を定義し、from settings_local import *一般的なsettings.pyファイルの先頭にあります。もちろん、settings.pyはこれらのインポートされた設定を上書きしてはなりません。

于 2012-08-09T07:21:23.763 に答える
1

なぜテストデータベースが必要なのですか?Djangoは、unittestを実行する前にテストデータベースを自動的に作成します。また、データベースルーティングは目的に適合していません。これは、読み取り/書き込み要求を別のデータベースにルーティングするためのものです。開発データベースを使用する場合DATABASEは、たとえばlocal_settings.pyで新しい構成を設定し、最後に、settings.pyと入力します。

try:
    from local_settings import *
except ImportError:
    pass
于 2012-08-09T07:22:45.870 に答える
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他の2つが失敗した場合にのみインポートされるため、基本的にはそのままにしておくことができます。ファブリックまたは他のツールを介した自動展開で簡単に実行できる最後のステップ。ファブリックの例は、名前の変更のようなものrun('mv _settings_prod.py settings_prod.py')です。

于 2012-08-09T07:37:35.127 に答える