[英]Connect Django to live Heroku Postgres database
我已将Postgres数据库添加到我的Heroku应用程序中,并试图将Django应用程序连接到该数据库。 但是,我的应用程序始终连接到本地Postgres数据库。
settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'app_db',
'USER': 'admin',
'PASSWORD': '',
'HOST': 'localhost',
'PORT': '',
}
}
db_from_env = dj_database_url.config(conn_max_age=500)
DATABASES['default'].update(db_from_env)
我已将.env文件中的'DATABASE_URL'设置为Heroku应用程序上Postgres数据库的URL,但似乎没有更新数据库。 如何强制我的应用连接到Heroku数据库而不是本地数据库?
您可以设置设置以在开发时从本地数据库读取,并在生产中使用Heroku DB。 首先,您可能已经知道,需要dj_database_url
。
您可以创建一个名为local_settings.py
的单独的设置文件,并在其中包含您的常规数据库配置(例如,默认的Django数据库配置)。 并在您的settings.py
:
DATABASES = {
'default': dj_database_url.config()
}
并且在您settings.py
的底部:
# Tries to import local settings, if on dev,
# import everything in local_Settings, which overrides the dj_database_url
# If on deploy, local_settings won't be found so just ignore the ImportError
try:
from .local_settings import *
except ImportError:
pass
因此,您的local_settings.py
应该位于开发服务器中,而不是Heroku应用程序中(您可以忽略它,将其添加到.gitignore中)。 我希望这是可以理解的。
从本地Django代码连接到Live heroku DB,而无需手动设置DATABASE_URL env变量:
将以下代码放入settings.py
文件中
import os, subprocess, dj_database_url
bashCommand = “heroku config:get DATABASE_URL -a app_name” #Use your app_name
output = subprocess.check_output([‘bash’,’-c’, bashCommand]).decode(“utf-8”) # executing the bash command and converting byte to string
DATABASES[‘default’] = dj_database_url.config(default=output,conn_max_age=600, ssl_require=True) #making connection to heroku DB without having to set DATABASE_URL env variable
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.