Джано: НЕПРАВИЛЬНО КОНФИГУРИРОВАННЫЕ БАЗЫ ДАННЫХ, Пожалуйста, предоставьте значение двигателя. (Несколько баз данных)
Привет ребята, я пытаюсь иметь 2 базы данных postgres в моем проекте django, одна для хранения данных пользователя, а другая для хранения другого содержимого, но я получаю эту ошибку, когда я пытаюсь запустить createsuperuser
.
raise ImproperlyConfigured("settings.DATABASES is improperly configured. "
django.core.exceptions.ImproperlyConfigured: settings.DATABASES is improperly configured. Please supply the ENGINE value. Check settings documentation for more details.
Это settings.py
DATABASES = {
'default': {},
'users_db': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'users_db',
'USER': 'postgres',
'PASSWORD': 'Trial_user123',
'HOST':'127.0.0.1',
'PORT':'5432',
},
'content_db': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'content_II',
'USER': 'postgres',
'PASSWORD': 'Trial_user123',
'HOST':'127.0.0.1',
'PORT':'5432',
},
}
DATABASE_ROUTERS = ['personal.routers.db_routers.AuthRouter', 'personal.routers.db_routers.PersonalDBRouter', ]
Это маршрутизатор
class AuthRouter:
route_app_labels = {'sessions', 'auth', 'contenttypes', 'admin', 'accounts'}
def db_for_read(self, model, **hints):
if model._meta.app_label in self.route_app_labels:
return 'users_db'
return None
def db_for_read(self, model, **hints):
if model._meta.app_label in self.route_app_labels:
return 'users_db'
return None
def allow_relation(self, obj1, obj2, **hints):
if (
obj1._meta.app_label in self.route_app_labels or
obj2._meta.app_label in self.route_app_labels
):
return True
return None
def allow_migrate(self, db, app_label, model_name=None, **hints):
if app_label in self.route_app_labels:
return 'users_db'
return None
class PersonalDBRouter:
route_app_labels = {'actions', 'blog', 'token_blacklist', 'taggit', 'django_celery_beat', 'django_celery_results',}
def db_for_read(self, model, **hints):
if model._meta.app_label in self.route_app_labels:
return 'content_db'
return None
def db_for_read(self, model, **hints):
if model._meta.app_label in self.route_app_labels:
return 'content_db'
return None
def allow_relation(self, obj1, obj2, **hints):
if (
obj1._meta.app_label in self.route_app_labels or
obj2._meta.app_label in self.route_app_labels
):
return True
return None
def allow_migrate(self, db, app_label, model_name=None, **hints):
if app_label in self.route_app_labels:
return 'content_db'
return None
Я не понимаю, что вызывает эту ошибку, так как я уже предоставил значение двигателя и не могу найти ошибку. Может ли кто-нибудь сказать мне, в чем проблема?
Спасибо
Установите свой DataBase
как :-
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'users_db',
'USER': 'postgres',
'PASSWORD': 'Trial_user123',
'HOST': 'localhost',
'PORT': '5432',
}
'content_db': {
'NAME': 'django.db.backends.postgresql_psycopg2',
'NAME': 'content_II',
'USER': 'postgres',
'PASSWORD': 'Trial_user123',
'HOST': 'localhost',
'PORT': '5432',
}
}
Вы должны перенести обе базы данных по-разному, например :-
$ ./manage.py migrate --database=users_db
$ ./manage.py migrate --database=content_II
Создайте superuser
в другой базе данных, например:
./manage.py createsuperuser --database=users_db
Попробуйте удалить using
в сохранении:
def create_user(...):
...
user.save()
def create_superuser(...):
...
user.save()
EDIT:
Только что заметил, что у ваших маршрутизаторов нет db_for_write
(вы написали db_for_read
дважды):
def db_for_write(self, model, **hints):
if model._meta.app_label in self.route_app_labels:
return 'users_db'
return None