如何根据调试标志让 Django 使用两个不同的数据库

SAM*_*ere 3 python django postgresql

我想在本地环境中使用简单的 SQLite 数据库,并在生产中使用 Postgresql 数据库。如何配置设置文件以根据 的值了解要使用哪个数据库DEBUG

f4l*_*lco 7

有多种选择:

  1. 下面是一个非常便宜的解决方案。Django 总是选择名为“default”的数据库。您可以有条件地分配它settings.py

    DATABASES = {
        'dev': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': BASE_DIR / 'db.sqlite3',
        },
        'production': {
            'ENGINE': 'django.db.backends.postgresql',
            # ...
        },
    }
    
    DATABASES['default'] = DATABASES['dev' if DEBUG else 'production']
    
    Run Code Online (Sandbox Code Playgroud)
  2. 您可以实现一个名为 的备用设置模块settings_dev.py。在那里配置数据库并使用环境变量DJANGO_SETTINGS_MODULE指向yourapp.settings_dev.

  3. 实现自定义数据库路由器。对于许多用例来说,这几乎肯定是多余的。请参阅有关多数据库支持的 Django 文档。