使用bash脚本删除django的数据库设置

时间:2019-01-23 12:07:37

标签: django linux bash

我正在尝试创建一个bash脚本来创建适合我公司的样板django项目。我需要删除DATABASES中的settings并附加一个新值。 DATABASES是具有结构的python字典

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

为此,我尝试了类似的操作

sed -i -e "/DATABASES = {/,/}/d" settings.py

但是它导致结尾}。

输出为

}

我知道,它匹配的模式是用于第一个花括号,而不是第二个。应该采取什么方法。

1 个答案:

答案 0 :(得分:0)

为什么不只在设置末尾附加新的DATABASE配置?它将自动覆盖先前的DATABASE配置。我这样使用:

    DBCONIG="DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': '${dbName}',
            'USER': '${dbUName}',
            'PASSWORD': '${dbPass}',
            'HOST': '127.0.0.1',
            'PORT': '3306',

        }
    }"
    echo $DBCONIG >> settings.py

这里我从外壳程序输入中收集了dbNamedbUName等。

对于更清洁的实现方法,我保留了local_settings.py,其中包含用户计算机特定的设置。在local_settings.py的内部,放置了用户的数据库配置。然后将文件导入settings.py中,如下所示:

try:
   from .local_settings import *
except:
   pass

此外,我通常将local_settings.py文件放在.gitignore中,以使这些设置不会被推送到存储库中。