You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署在Heroku的Django站点能否移除Postgres数据库插件?

问题

我用Django搭建了一个网站并部署在Heroku上,之前按照教程配置了Heroku Postgres数据库插件。但Heroku近期调整定价后,该插件从免费变为每月5美元。我的站点无需用户账户、不收集用户信息,仅Django admin的登录信息存储在该数据库中,我已导出.pgdmp文件但无法解析内容。以下是settings.py中的数据库配置代码:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

import dj_database_url
db_from_env = dj_database_url.config(conn_max_age=500)
DATABASES['default'].update(db_from_env)

想咨询三个问题:

  1. 能否在Heroku的CLI或控制面板中删除该插件而不破坏生产环境的站点?
  2. 是否需要先修改settings.py或其他Django代码?
  3. 本地开发服务器是否仍可访问Django admin?

回答

  • 能否删除Heroku Postgres插件而不破坏站点?
    可以删除,但要提前做好准备:

    1. 你的站点仅用数据库存Django admin账号,删除插件后,生产环境会自动切换到settings.py里的SQLite配置——因为dj_database_url.config()会因Postgres环境变量缺失返回空值,不会覆盖默认的SQLite设置。但要注意Heroku的文件系统是临时的:每次dyno重启(比如部署代码、Heroku自动维护),SQLite数据库文件会被重置,admin账号会丢失,需要重新创建。
    2. 删除操作:用Heroku CLI执行heroku addons:destroy heroku-postgresql,或者在Heroku控制面板的「Add-ons」页面找到插件直接删除。操作前建议先通过heroku run python manage.py createsuperuser在Postgres里重新建一个admin账号,方便切换后使用(毕竟你解析不了pgdmp文件)。
  • 是否需要修改settings.py或其他代码?
    不需要强制修改,但可以按需调整:

    1. 当前配置已经能在Postgres插件删除后自动切到SQLite,核心功能不受影响。
    2. 如果想彻底清理Postgres相关依赖,可以删掉import dj_database_url及后续两行代码,直接保留SQLite的默认配置;同时把dj-database-url从requirements.txt里移除,减少不必要的依赖。
  • 本地开发服务器是否仍可访问Django admin?
    完全可以。本地开发默认用的就是settings.py里配置的SQLite数据库,只要本地db.sqlite3文件里有已创建的admin账号,就能正常登录。如果本地没有admin账号,运行python manage.py createsuperuser创建一个就行,和生产环境的数据库调整无关。

内容的提问来源于stack exchange,提问作者jbothner21

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 07:15:36