我正在尝试创建一个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
但是它导致结尾}。
输出为
}
我知道,它匹配的模式是用于第一个花括号,而不是第二个。应该采取什么方法。
答案 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
这里我从外壳程序输入中收集了dbName
,dbUName
等。
对于更清洁的实现方法,我保留了local_settings.py
,其中包含用户计算机特定的设置。在local_settings.py
的内部,放置了用户的数据库配置。然后将文件导入settings.py
中,如下所示:
try:
from .local_settings import *
except:
pass
此外,我通常将local_settings.py
文件放在.gitignore
中,以使这些设置不会被推送到存储库中。