Dzung Nguyen
Dzung Nguyen

Reputation: 3944

Production and development database in Django 1.8

How do I seperate production and development database in Django 1.8?

For now I'm doing the naive way using the same database for both dev and production. When deploying, the dev database are copied over production (SQLite).

What's the correct way to do this in Django 1.8? Additionally, how can I update production tables without losing previous data?

Upvotes: 2

Views: 1097

Answers (2)

raratiru
raratiru

Reputation: 9616

Update

Marina Mele has written a thorough article on the dual environment setup "thing".


In my setup, I have 2 or 3 different virtualenvs.

I also have a main settings.py with the basic parameters and different settings that inherit from the main and cater for each virtualenv.

The idea is described here and here.

In my .virtualenvs/bin/activate file I append the path to the relevant settings file:

DJANGO_SETTINGS_MODULE=air.settings.settingst
export DJANGO_SETTINGS_MODULE

This way, I have a separate database for each environment for the same project.

Upvotes: 1

Wtower
Wtower

Reputation: 19902

Well, first off, I would really recommend you to not use sqlite in production. If you insist, what I would do would be to make a copy of the sqlite file outside of the project structure, and use an additional settings file for live only, such as settings_live.py and override the DATABASES setting with the correct path:

from myproject.settings import *

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': ...,  # the correct path file name here
    }
}

Make sure that you specify the correct settings file in your production environment. For example, for wsgi:

os.environ.setdefault('DJANGO_SETTINGS_MODULE', wsgi_app + '.settings_live')

Upvotes: 2

Related Questions