Форум сайта python.su
Приветствую. Захотелось мне изолировать базы данных проектов. Посмотрел вокруг и решил что схемы psql то, что мне нужно. И django их умеет. Нарисовал в сетинсах две схемы.
DATABASES = { 'default': {'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'django', 'USER': 'd', 'PASSWORD': '***', 'HOST': '127.0.0.1', 'PORT': '5432', 'OPTIONS': { 'options': '-c search_path=django'}}, 'messenger': {'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'django', 'USER': 'messenger', 'PASSWORD': '***', 'HOST': '127.0.0.1', 'PORT': '5432', 'OPTIONS': {'options': '-c search_path=messenger' }}}
class Route(object):
def allow_migrate(self, db, app_label, model=None, **hints):
if app_label == 'messenger':
if db == 'messenger':
return True
else:
return False
else:
return True
./manage.py makemigrations messenger Migrations for 'messenger': 0001_initial.py: - Create model Email - Create model Error - Create model EventMessenger - Create model PhoneNumber - Create model User - Add field user to phonenumber - Add field eventmessenger to error - Add field user to error - Add field user to email ./manage.py migrate messenger Operations to perform: Apply all migrations: messenger Running migrations: Rendering model states... DONE Applying messenger.0001_initial... OK `
./manage.py dbshell --database messenger psql (9.1.20) django=> \c django Вы подключены к базе данных "django" как пользователь "messenger". django=> SELECT SESSION_USER, CURRENT_USER; session_user | current_user --------------+-------------- messenger | messenger (1 строка) django=> \dn Список схем Имя | Владелец -----------+----------- django | django messenger | messenger public | postgres (3 строки) django=> show search_path; search_path ---------------- "$user",public (1 строка) django=> \dt Отношения не найдены.
Офлайн
Базу данный нужно указывать при миграциях..
Офлайн
/manage.py migrate –database=“my_db_name_for_apps”
Офлайн
helm2004.
Спасибо, похоже зря я назвал приложение и конектр к базе одноимено. Сам же и запуталя.
Офлайн