如何在Django中定义两个数据库一个用于生产,一个用于开发

2024-04-23 09:06:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个在Heroku上工作的项目,我的本地机器上没有安装PostgreSQL。我想继续在本地机器上使用sqlite3运行该应用程序,但当我将其推送到Heroku时,它将转换为pg

我所要做的就是有一个IF条件,如果这是开发,那么运行sqlite3。。但如果是生产运行,则执行以下命令。你知道吗

DATABASES = {
  'default': {
    'ENGINE': 'django.db.backends.postgresql_psycopg2',
    'NAME': '',
    'HOST': '',
    'PORT': 5432,
    'USER': '',
    'PASSWORD': ''
  }
}

Heroku正在处理dj_database_url

import dj_database_url
DATABASES['default'] =  dj_database_url.config()

它基本上类似于Rails,当我们定义用于生产的gem和用于测试和开发的另一个gem时。你知道吗


Tags: 项目命令机器应用程序defaulturlherokuif
1条回答
网友
1楼 · 发布于 2024-04-23 09:06:16

你使用VirtualEnvs吗?你知道吗

您可以像这样设置settings.py

DATABASES = {
    'default': {
    'ENGINE': get_var('DB_ENGINE'),
    'NAME': get_var('DB_NAME'),
    'HOST': get_var('DB_HOST'),
    ...
    }
}

其中get_var正在读取环境变量。这些环境变量由virtualenv的postactivate文件设置。你知道吗

生产virtualenv postactivate使用postgresql值设置envvars DB\u ENGINE、DB\u NAME、DB\u HOST

dev virtualenv postactivate文件设置与开发数据库相对应的环境变量。你知道吗

相关问题 更多 >