如果找不到自定义数据库,则django默认为db.sqlite3

时间:2014-08-06 00:56:07

标签: django

说我有这个真正的rad数据库,我正在使用Django,但出于调试目的,我想在setting.py中使用默认的`db.sqlite3'数据库,如果找不到我的rad数据库或用户不是能够轻松设置数据库。

如何使用Django完成此任务?

2 个答案:

答案 0 :(得分:2)

例如,您可以设置调试var的数据库延迟。在设置文件中:

if DEBUG:
//test database using sqlite
 DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'you_db_name.sqlite3'),
    }
 }
else:
   //here your prod database

答案 1 :(得分:2)

我这样做是这样的:

在settings.py中:

import dj_database_url # you'll need this in requirements.txt

DATABASES = {
    "default": dj_database_url.config(default='sqlite:///db.sqlite3'),
}

如果设置了DATABASE_URL环境变量,因为它将在生产中(Heroku对我来说,但你可以在任何地方使用DATABASE_URL env变量)然后使用它。否则,回到sqlite

此外,在settings.py结束时,我有:

# Import optional local settings.  This must be at the END of this file.
try:
    from .local import *
except ImportError:
    pass

这样你可以通过两种方式覆盖sqlite数据库:你可以设置DATABASE_URL环境变量,或者你可以创建一个" local.py"文件(通过.gitignore将其从版本控制中排除)将有选择地覆盖它和其他设置。为什么两种方式?主要是因为我的团队中的大多数开发人员比管理环境变量更容易管理本地设置文件。

我将这个理念用于我的所有设置,这些设置可能因开发和生产而有所不同,或者包含我不希望在源代码管理中出于任何其他原因的内容。