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

在Heroku部署Django应用是否需配置开发与生产双Postgres数据库?

建议分开配置本地开发与Heroku生产数据库

非常建议你为本地开发和Heroku生产环境分别配置独立的Postgres数据库,哪怕你的应用很简单,原因如下:

  • 数据安全与隔离:本地开发的测试数据(比如假用户、测试内容)不会污染生产环境的真实数据,也能避免误操作删除或修改生产库的重要数据;同时生产环境的敏感数据不会暴露在本地开发环境中。
  • 环境一致性:本地用Postgres而非Django默认的SQLite,能和Heroku的生产数据库保持环境一致,避免出现SQLite不支持的Postgres特定语法、字段类型(比如JSONB、数组类型)等兼容性问题,减少部署后的意外bug。
  • 开发体验与合规:直接连接Heroku的生产库开发会有明显网络延迟,而且Heroku官方也不推荐这种做法,存在数据泄露和误操作的风险。

具体配置步骤(Django项目)

  1. 本地搭建Postgres:在本地安装Postgres,创建专门的开发数据库(比如命名为myapp_dev),设置好对应的用户名和密码。
  2. 修改settings.py配置:通过环境变量区分本地和生产环境的数据库配置,推荐使用dj_database_url库解析Heroku的数据库凭证:
    先安装依赖:
    pip install dj-database-url
    
    然后在settings.py中添加:
    import os
    import dj_database_url
    
    # 本地开发数据库配置
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql_psycopg2',
            'NAME': os.environ.get('LOCAL_DB_NAME', 'myapp_dev'),
            'USER': os.environ.get('LOCAL_DB_USER', 'postgres'),
            'PASSWORD': os.environ.get('LOCAL_DB_PASSWORD', '你的本地Postgres密码'),
            'HOST': os.environ.get('LOCAL_DB_HOST', 'localhost'),
            'PORT': os.environ.get('LOCAL_DB_PORT', '5432'),
        }
    }
    
    # 生产环境(Heroku)自动适配
    if os.environ.get('DATABASE_URL'):
        DATABASES['default'] = dj_database_url.config(conn_max_age=600)
    
  3. 本地与生产的迁移:
    • 本地开发时,运行python manage.py migrate初始化本地数据库,正常开发调试。
    • 部署到Heroku时,Heroku会自动将你之前获取的Postgres凭证设置为DATABASE_URL环境变量,代码会自动切换到生产数据库,部署后运行heroku run python manage.py migrate完成生产库的迁移即可。

这种配置方式完全符合Heroku的部署要求,操作简单,能帮你避开很多新手容易踩的坑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 04:25:17