Django Postgresql配置错误:配置不当:settings.DATABASES

时间:2016-06-14 14:30:17

标签: python django postgresql sqlite

Django的新手!!

在从sqlite3切换到postgresql的过程中, 我试着按照链接中的步骤进行操作。

  

http://www.marinamele.com/taskbuster-django-tutorial/install-and-configure-posgresql-for-django

settings.py(添加数据库设置如下)

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': get_env_variable('DATABASE_NAME'),
        'USER': get_env_variable('DATABASE_USER'),
        'PASSWORD': get_env_variable('DATABASE_PASSWORD'),
        'HOST': '',
        'PORT': '',
    }
}
def get_env_variable(var_name):
    try:
        return os.environ[var_name]
    except KeyError:
        error_msg = "Set the %s environment variable" % var_name
        raise ImproperlyConfigured(error_msg)
  

在Django shell中

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

错误:

django.core.exceptions.ImproperlyConfigured:settings.DATABASES is improperly configured. 
Please supply the ENGINE value. Check settings documentation 
for more details.

请帮我解决这个问题。

2 个答案:

答案 0 :(得分:0)

由于代表而回答而不是评论。

您的settings.py显示了这一点:' ENGINE':' django.db.backends.postgresql_psycopg2' 但是你的shell输出显示:' ENGINE' django.db.backends.dummy'

您确定已正确配置所有内容吗?

答案 1 :(得分:0)

settings.DATABASES配置中出现错误

settings.py(现在的数据库设置)

DATABASES = {
    'default': {
         'ENGINE': 'django.db.backends.postgresql_psycopg2',
         'NAME': 'myproject',
         'USER': 'myprojectuser',
         'PASSWORD': 'password',
         'HOST': 'localhost',
         'PORT': '',
    }
}

使用$ DATABASE_URL在数据库配置中出现了一些错误 已被更正为

#Update database configuration with $DATABASE_URL.
db_from_env = dj_database_url.config(conn_max_age=500)
DATABASES['default'].update(db_from_env)

然后使用

应用迁移
python manage.py makemigrations
python manage.py migrate

解决了这个问题。

现在Django shell中的DATABASE配置

>>> from trydjango.settings import DATABASES
>>> DATABASES
{'default': {'ENGINE': 'django.db.backends.postgresql_psycopg2',
'AUTOCOMMIT': True, 'ATOMIC_REQUESTS': False, 'NAME': 'myproject', 
'CONN_MAX_AGE': 0, 'TIME_ZONE': None, 'OPTIONS': {}, 'HOST': 'localhost', 
'USER': 'myprojectuser', 'TEST': {'COLLATION': None, 'CHARSET': None, 
'NAME': None, 'MIRROR': None}, 'PASSWORD': 'password', 'PORT': ''}}

完成