2017-01-26 3 views
1

У меня проблема с настройкой Django DATABASES в settings.py. Я использую Python 3.4.3, Django 1.10.5 и Psycopg 2.6.1Не удается перезаписать настройки базы данных django по умолчанию

если мой код выглядит

 DATABASES = { 
      'default':{ 
        'ENGINE': 'django.db.backends.postgresql_psycopg2', 
         'NAME': ' dbname', 
         'USER': 'postgres', 
         'PASSWORD': 'dbpass', 
         'HOST': 'localhost', 
         'PORT': '5432', 
    } 
} 

и я бегу manage.py diffsettings в DATABASE разделе есть некоторые настройки по умолчанию :

DATABASES = {'default': {'USER': '', 'HOST': '', 'AUTOCOMMIT': True, 'NAME': '', 'ATOMIC_REQUESTS': False, 'OPTIONS': {}, 'TEST': {'MIRROR': None, 'CHARSET': None, 'NAME': None, 'COLLATION': None}, 'ENGINE': 'django.db.backends.dummy', 'PASSWORD': '', 'CONN_MAX_AGE': 0, 'TIME_ZONE': None, 'PORT': ''}} 

, но когда я изменяю 'по умолчанию' на '' дб (или любое другое имя)

 DATABASES = { 
      'db':{ 
        'ENGINE': 'django.db.backends.postgresql_psycopg2', 
         'NAME': ' dbname', 
         'USER': 'postgres', 
         'PASSWORD': 'dbpass', 
         'HOST': 'localhost', 
         'PORT': '5432', 
    } 
} 

в manage.py diffsettings «знает» базы данных БД:

DATABASES = {'db': {'NAME': 'dbname', 'HOST': 'localhost', 'PORT': '5432', 'PASSWORD': 'dbpass', 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'USER': 'postgres'}, 'default': {'OPTIONS': {}, 'ATOMIC_REQUESTS': False, 'HOST': '', 'AUTOCOMMIT': True, 'PASSWORD': '', 'USER': '', 'TIME_ZONE': None, 'NAME': '', 'PORT': '', 'CONN_MAX_AGE': 0, 'ENGINE': 'django.db.backends.dummy', 'TEST': {'NAME': None, 'MIRROR': None, 'COLLATION': None, 'CHARSET': None}}} 

Что должен я использовать свою базу данных по умолчанию, и не должны использовать DATABASE_ROUTERS?

+2

Вы уверены, что не переписываете свои настройки где-нибудь? когда вы не хотите использовать маршрутизаторы, вы должны указать свой db по умолчанию – sebb

+0

Почему вы вообще пытаетесь удалить значение по умолчанию? – Sayse

+0

Ох .. это было просто, как это ... в нижней части страницы я получил настройки, заданные для Heroku #HEROKU импорт dj_database_url БАЗ [ «по умолчанию»] = dj_database_url.config() и это переписывало мои настройки ... Я не знаю, почему этот код существует, я должен найти другой способ установить базу данных для Heroku. Спасибо! –

ответ

2

Из вашего комментария в вопросе выше, я предполагаю, что вы пытаетесь настроить Django в экземпляре Heroku.

Если вы используете шаблон стартера Heroku, вы увидите перезапись переменной DATABASES. Это потому, что Heroku использует библиотеку dj_database_url, чтобы получить путь к среде базы данных, которая была развернута с вашим приложением Heroku. Поэтому Django обновляет базу данных по умолчанию, чтобы использовать ее. Это актуально, если вы хотите развернуть приложение Django для экземпляра Heroku.

В случае, если вы хотите использовать приложение в локальной среде (аппарат), вам просто нужно прокомментировать эти две строки:

# db_from_env = dj_database_url.config(conn_max_age=500) 
# DATABASES['default'].update(db_from_env) 

Но помните закомментировать эти строки снова при загрузке кода в Heroku.

+0

Да, ты прав. Я загружал свой проект в Heroku, но ранее мне не нужно было заботиться о переменной DATABASES - как-то он выбирает правильное определение относительно рабочей среды (локальная, Heroku). Я не помню, как его стирал, но я должен изменить его плохо. Спасибо за ваш комментарий. –

Смежные вопросы