Python Django+;Heroku数据库

Python Django+;Heroku数据库,python,django,database,postgresql,heroku,Python,Django,Database,Postgresql,Heroku,在我的Django应用程序中编辑settings.py文件时,我有以下几点: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'mydb', 'USER': 'myuser', 'PASSWORD': 'password', 'HOST': '', 'PORT': '

在我的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解析。您应该做的是在本地定义相同的内容:有一些用于不同db后端的格式示例

设置env变量的最佳方法是将其放入开发目录中名为.env的文件中,然后始终通过
foreman start
启动应用程序(foreman应该由Heroku toolbelt安装)。更多信息,请参见Heroku


但是,如果这对您不起作用,您可以在第一次运行manage.py之前,在shell中执行导出数据库的操作。

您的代码可以在heroku上运行,但heroku可以在heroku环境中创建新的数据库。。您必须转储并导入到heroku postgres…如果我只管理.py runserver呢?当像这样在本地运行而不是通过heroku运行时,应用了什么数据库设置?@Jack您在本地运行服务器时会出错,因为配置不正确。它应该是
数据库['mydb']
我想我要问的是:在本地开发时我应该使用什么?然后,当需要部署时,我可以导入dj_数据库_url并使用它吗?Foreman不再提供Heroku工具带。现在命令是heroku local。