【问题标题】:Django + Heroku DatabaseDjango + Heroku 数据库
【发布时间】:2015-03-02 05:59:40
【问题描述】:

在我的 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,我将其设置为数据库是否重要?

【问题讨论】:

  • 您的代码将在 heroku 上运行,但 heroku 在 heroku 环境中创建新数据库.. 您必须转储并导入 heroku postgres ...

标签: python django database postgresql heroku


【解决方案1】:

这两个都没有意义。该 sn-p 的最后一行覆盖了您之前定义的默认数据库配置。

编辑

这与你是否使用 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

【讨论】:

  • 如果我只使用 manage.py runserver 会怎样?当像这样在本地运行而不是通过 heroku 运行时,应用了哪些数据库设置?
  • @Jack 在本地运行服务器时会出错,因为配置不正确。应该是DATABASES['mydb']
  • 我想我要问的是:本地开发时我应该使用什么?然后,到了部署的时候,我可以只导入 dj_database_url 并使用它吗?
  • Foreman 不再附带 Heroku 工具带。现在的命令是heroku local
猜你喜欢
  • 2019-01-17
  • 2019-12-06
  • 2021-10-19
  • 2021-09-01
  • 1970-01-01
  • 2015-09-11
  • 2015-09-10
  • 2017-04-07
  • 2017-09-24
相关资源
最近更新 更多