如何在Django 1.8中分离生产和开发数据库?
现在我正在以天真的方式使用相同的数据库进行开发和生产。部署时,将通过生产(SQLite)复制开发人员数据库。
在Django 1.8中执行此操作的正确方法是什么?此外,如何在不丢失以前数据的情况下更新生产表?
答案 0 :(得分:2)
好吧,首先,我真的建议你不要在生产中使用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')
答案 1 :(得分:1)
<强>更新强>
Marina Mele撰写了一篇关于dual environment setup&#34;事情&#34;的完整文章。
在我的设置中,我有2个或3个不同的virtualenvs。
我还有一个主settings.py
,其中包含基本参数和不同的设置,这些参数从main继承而且适合每个virtualenv。
在我的.virtualenvs/bin/activate
文件中,我将路径附加到相关设置文件:
DJANGO_SETTINGS_MODULE=air.settings.settingst
export DJANGO_SETTINGS_MODULE
这样,我为同一个项目的每个环境都有一个单独的数据库。