如何在Heroku上为Django应用程序设置数据库?

16

我是一个完全的Heroku新手,正在尝试在Heroku上设置Django应用程序。 我无法弄清楚在settings.py中为这些设置输入什么:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': '',                      # Or path to database file if using sqlite3.
        # The following settings are not used with sqlite3:
        'USER': '',
        'PASSWORD': '',
        'HOST': '',                      # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.
        'PORT': '',                      # Set to empty string for default.
    }
}

有人能帮我吗?谢谢!

1个回答

23

你可以通过在仪表板中查看数据库信息或运行 "heroku config" 命令来手动完成。但是最好的方法是按照 Heroku Django 入门指南 中详细说明的操作步骤进行。将 dj-database-url==0.2.1 添加到你的 requirements.txt 文件中,然后执行以下步骤:

# Parse database configuration from $DATABASE_URL
import dj_database_url
DATABASES = {
    'default': dj_database_url.config()
}

替代其他数据库定义。


1
谢谢!你的意思是说,如果我编辑requirements.txt,那么我应该能够将上面的代码块复制并粘贴到settings.py中,而不必担心填写数据库设置?我这样做了,然后尝试运行'python manage.py syncdb',但出现了以下错误:“ImproperlyConfigured:settings.DATABASES配置不正确。请提供ENGINE值。有关更多详细信息,请检查设置文档。” - Sachi Murasaki
然后我尝试将"ENGINE"的值设置为'django.db.backends.postgresql_psycopg2',但它仍然给了我相同的错误... 嗯。 - Sachi Murasaki
1
可能的问题是这段代码是为在Heroku上运行而编写的,其中您的DATABASE_ENV或其他一些系统变量已经设置好了。我猜您正在尝试首先在本地构建上运行此代码。为了解决这个问题,您可以通过向dj_database_url.config()传递一个默认的URL字符串(请参见https://github.com/kennethreitz/dj-database-url)或者为您的本地构建维护一个单独的设置文件来解决。 - Andrew Gorcester
1
也许最理想的方法是设置您的设置文件,使得您的“基本”设置文件在Heroku上运行,但您也可以有一个本地设置文件,使用import仅覆盖特定的设置。解释如何做这件事有点复杂,但我相信如果您正在寻找类似资源,对于初学者来说非常有用的书籍“Django两球冰淇淋”中详细介绍了这种策略。 - Andrew Gorcester
哦,我明白了。传递默认的URL字符串似乎可以工作。谢谢! - Sachi Murasaki

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接