Django runserver 自定义数据库

标签 django

我正在使用 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
有没有类似的?我还尝试使用第二个设置文件,但 --settings 选项不起作用:(--settings 选项似乎已被弃用,在 DOCS 中根本没有提及)
django-admin.py runserver --settings=settings_tests
或者
django-admin.py runserver --settings settings_tests
引发错误:

ImportError: Could not import settings 'settings_tests' (Is it on sys.path?): No module named settings_tests

最佳答案

比创建多个配置文件更简洁、更具可扩展性的配置切换方式是使用环境变量(参见 Heroku 和其他人使用的 #3 of the twelve-factor app methodology)。例如:

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 的漂亮小应用程序。 .

关于Django runserver 自定义数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11187123/

相关文章:

python - 如何修改 GET 的反向 url?

python - Django 获取外键对象

django - 如何将 INFO 和 ERROR 日志隔离在其自己的文件路径中

Django Rest Framework - 创建权限

python - Django - 403 禁止。 CSRF token 缺失或不正确

python - 将 ImageField 添加到 Django 模型会导致错误

django:哪些包用于计费计划、 strip 化和发票

django - 将 tests.py 替换为 tests/directory 后,使 manage.py test app.TestCase 再次工作的最简单方法是什么?

jquery - 如何使用 jQuery ajax 实时搜索 Django 中的模型?

Django 1.2 - Pb 在模板中带有表单(WSGIRequest)