Удалите настройки базы данных django, используя скрипт bash - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь создать 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 голосов
/ 23 января 2019

Почему бы просто не добавить новую 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

Здесь я собираю dbName, dbUName и т. Д. С ввода оболочки.

Для более чистого подхода к реализации я сохраняю local_settings.py, который имеет настройки, специфичные для компьютера пользователя. Внутри local_settings.py я положил конфигурации БД пользователя. и я импортирую этот файл в settings.py так:

try:
   from .local_settings import *
except:
   pass

Кроме того, я обычно помещаю файл local_settings.py в .gitignore, чтобы эти параметры не передавались в хранилище.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...