4.2. Settings Databases¶
4.2.1. SQLite3¶
>>>
... DATABASES = {
... 'default': {
... 'ENGINE': 'django.db.backends.sqlite3',
... 'NAME': BASE_DIR / 'db.sqlite3',
... }
... }
4.2.2. PostgreSQL¶
>>>
... DATABASES = {
... 'default': {
... 'ENGINE': 'django.db.backends.postgresql',
... 'NAME': 'myproject',
... 'USER': 'myusername',
... 'PASSWORD': 'mypassword',
... 'HOST': 'localhost',
... 'PORT': 5432,
... }
... }
4.2.3. Heroku¶
>>>
... if os.getenv('DATABASE_URL'):
... import dj_database_url
... DATABASES['default'] = dj_database_url.config()
4.2.4. Multiple Databases¶
>>>
... DATABASES = {
... 'default': {
... 'ENGINE': 'django.db.backends.postgresql',
... 'NAME': 'myproject',
... 'USER': 'myusername',
... 'PASSWORD': 'mypassword',
... 'HOST': '192.168.0.2',
... 'PORT': 5432,
... },
... 'replica': {
... 'ENGINE': 'django.db.backends.postgresql',
... 'NAME': 'myproject',
... 'USER': 'myusername',
... 'PASSWORD': 'mypassword',
... 'HOST': '192.168.0.3',
... 'PORT': 5432,
... }
... }
File myproject/dbrouter.py
:
>>>
... class EcosystemDBRouter(object):
... ecosystem = ['confluence', 'jira', 'stash', 'bamboo', 'sonar']
...
... def db_for_read(self, model, **hints):
... if model._meta.app_label in self.ecosystem:
... return model._meta.app_label
... else:
... return 'default'
...
... def db_for_write(self, model, **hints):
... return 'default'
...
... def allow_relation(self, obj1, obj2, **hints):
... if obj1._meta.app_label in self.ecosystem:
... return False
... elif obj2._meta.app_label in self.ecosystem:
... return False
... return True
...
... def allow_syncdb(self, db, model):
... if model._meta.app_label in self.ecosystem:
... return False
... else:
... return True