Django + Heroku 数据库

Django + Heroku Database

在我的 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 设置之间设置了 link。

如果 Heroku 无论如何都要将其转换为 postgresql,那么我设置的数据库有什么关系吗?

这两个都没有意义。该代码段的最后一行会覆盖您之前定义的默认数据库配置。

编辑

这与您是否使用manage.py 运行服务器无关。唯一的一点是 Heroku 定义了一个环境变量 DATABASE_URL,其中包含数据库位置和凭据,然后由 dj_database_url 解析。你应该做的是在本地定义相同的东西:dj_database_url docs 有一些用于不同数据库后端的格式示例。

设置环境变量的最好方法是将它放在开发目录中名为 .env 的文件中,然后始终通过 foreman start 启动您的应用程序(Foreman 应该由 Heroku 安装工具带)。有关更多信息,请参阅 Heroku getting started docs

但是,如果这对您不起作用,您可以随时在 shell 中 export DATABASE_URL=whatever ,然后再 运行 manage.py 第一次。