我在settings.py中设置了Django DATABASES的问题。 我正在使用Python 3.4.3,Django 1.10.5和psycopg 2.6.1
如果我的代码看起来像
DATABASES = {
'default':{
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': ' dbname',
'USER': 'postgres',
'PASSWORD': 'dbpass',
'HOST': 'localhost',
'PORT': '5432',
}
}
我在DATABASE部分运行manage.py diffsettings有一些默认设置:
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': ''}}
但是当我将'default'更改为'db'(或任何其他名称)时
DATABASES = {
'db':{
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': ' dbname',
'USER': 'postgres',
'PASSWORD': 'dbpass',
'HOST': 'localhost',
'PORT': '5432',
}
}
manage.py diffsettings'知道'数据库db:
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?
答案 0 :(得分:2)
根据您在上述问题中的评论,我假设您正在尝试在Heroku实例中设置Django。
如果您正在使用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时再次注释掉这些行。