我在 settings.py 中的 Django 数据库设置有问题。 我正在使用 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',
}
}
我在数据库部分运行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“知道”数据库:
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 ?
最佳答案
根据您在上述问题中的评论,我假设您正在尝试在 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 时再次注释掉这些行。
关于python - 无法覆盖默认的 django 数据库设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41882798/