在我的 Django 应用程序中编辑 settings.py 文件时,我有以下内容:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'mydb',
'USER': 'myuser',
'PASSWORD': 'password',
'HOST': '',
'PORT': '',
}
}
# Parse database configuration from $DATABASE_URL
import dj_database_url
DATABASES['default'] = dj_database_url.config()
谁能解释一下结果到底是什么?
一方面,我已经建立了一个 postgresql 数据库 - 到目前为止一直是 sqlite 并且仅在本地用于开发。
现在我正在部署到 Heroku,我导入了 dj_database_url,我认为它在我的数据库和 Heroku 自己的 postgresql 设置之间建立了链接。
那么,如果 Heroku 无论如何都要将其转换为 postgresql,那么我设置的数据库有什么关系吗?
最佳答案
同时拥有这两者是没有意义的。该片段的最后一行会覆盖您之前定义的默认数据库配置。
编辑
这与您是否使用 manage.py runserver 无关。唯一的一点是 Heroku 定义了一个环境变量 DATABASE_URL,其中包含数据库位置和凭据,然后由 dj_database_url 解析。你应该做的是在本地定义同样的东西:dj_database_url docs有一些用于不同数据库后端的格式示例。
设置 env 变量的最佳方法是将其放在开发目录中名为 .env 的文件中,然后始终通过 foreman start
启动您的应用程序(Foreman 应该已安装Heroku 工具带)。查看 Heroku getting started docs了解更多。
但是如果这对你不起作用,你总是可以在第一次运行 manage.py 之前在你的 shell 中执行 export DATABASE_URL=whatever
。
关于python - Django + Heroku 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27766975/