15

私はDjango 1.4を使用しています

開発サーバーを起動する必要があり、使用するデータベースを (コマンドで) 指定したいと考えています。たとえば、設定に次のものが含まれているとします。

DATABASES = {
    'default': {
        'NAME': 'db.db',
        'ENGINE': 'django.db.backends.sqlite3'
    },
    'tests': {
        'NAME': 'tests.db',
        'ENGINE': 'django.db.backends.sqlite3'
    },
}

次のようなものを使用したい:

django-admin.py runserver --database=tests

似たようなものはありますか?2 番目の設定ファイルも使用しようとしましたが、 --settings オプションが機能しません: ( --settings オプションは非推奨のようです。DOCSはまったく言及されていません) 。

django-admin.py runserver --settings=settings_tests

また

django-admin.py runserver --settings settings_tests

エラーが発生します:

ImportError: 設定 'settings_tests' をインポートできませんでした (sys.path にありますか?): settings_tests という名前のモジュールはありません

4

4 に答える 4

29

複数の構成ファイルを作成するよりも、構成を切り替えるクリーンでスケーラブルな方法は、環境変数を使用することです ( Heroku などで使用されている 12 要素アプリの方法論の #3 を参照してください)。例えば:

from os import environ

DATABASES = {
    'main': {
        'NAME': 'db.db',
        'ENGINE': 'django.db.backends.sqlite3'
    },
    'tests': {
        'NAME': 'tests.db',
        'ENGINE': 'django.db.backends.sqlite3'
    },
}

default_database = environ.get('DJANGO_DATABASE', 'main')
DATABASES['default'] = DATABASES[default_database]

DJANGO_DATABASE次に、環境変数を設定することにより、デフォルトのデータベースを変更できます。

export DJANGO_DATABASE='tests'
./manage.py runserver

...また...

DJANGO_DATABASE='tests' ./manage.py runserver

Python コードを使用して環境変数を設定することもできます。


編集: このプロセスを簡単にするために、Kenneth Reitz がdj-database-urlという素敵な小さなアプリを作成しました。

于 2012-06-25T12:27:19.780 に答える
12

Django 1.4 で呼び出す正しいコマンドは次のとおりであることがわかりました。

django-admin.py runserver --settings=myproject.settings_tests

この情報は Django DOCS のどこにありますか?

ご回答ありがとうございます

グリフォックス

于 2012-06-25T13:37:03.643 に答える
5

以下で作成settings_tests.pyします。

from settings import *

DATABASES = {
    'default': {
        'NAME': 'tests.db',
        'ENGINE': 'django.db.backends.sqlite3'
    },

}

実行するdjango-admin.py runserver --settings=settings_tests

于 2012-06-25T10:12:49.903 に答える