【发布时间】:2016-01-15 10:53:30
【问题描述】:
如何在 Django 1.8 中分离生产和开发数据库?
目前,我正在以一种天真的方式使用相同的数据库进行开发和生产。部署时,开发数据库复制到生产环境 (SQLite)。
在 Django 1.8 中执行此操作的正确方法是什么?此外,如何在不丢失以前数据的情况下更新生产表?
【问题讨论】:
标签: django
如何在 Django 1.8 中分离生产和开发数据库?
目前,我正在以一种天真的方式使用相同的数据库进行开发和生产。部署时,开发数据库复制到生产环境 (SQLite)。
在 Django 1.8 中执行此操作的正确方法是什么?此外,如何在不丢失以前数据的情况下更新生产表?
【问题讨论】:
标签: django
嗯,首先,我真的建议你不要在生产中使用 sqlite。如果你坚持,我会做的是在项目结构之外制作一个 sqlite 文件的副本,并使用一个额外的设置文件仅用于实时,例如 settings_live.py 并用正确的路径覆盖 DATABASES 设置:
from myproject.settings import *
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': ..., # the correct path file name here
}
}
确保在生产环境中指定正确的设置文件。例如,对于 wsgi:
os.environ.setdefault('DJANGO_SETTINGS_MODULE', wsgi_app + '.settings_live')
【讨论】:
更新
Marina Mele 写了一篇关于dual environment setup“事物”的详尽文章。
在我的设置中,我有 2 或 3 个不同的 virtualenvs。
我还有一个主settings.py,其中包含从主继承并满足每个虚拟环境的基本参数和不同设置。
在我的.virtualenvs/bin/activate 文件中,我将路径附加到相关设置文件:
DJANGO_SETTINGS_MODULE=air.settings.settingst
export DJANGO_SETTINGS_MODULE
这样,我为同一个项目的每个环境都有一个单独的数据库。
【讨论】: