我正在尝试创建一个 bash 脚本来创建一个适合我公司的样板 django 项目。我需要删除DATABASES
insettings
并附加新的。这DATABASES
是一个具有结构的python字典
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
为此,我尝试了这样的事情
sed -i -e "/DATABASES = {/,/}/d" settings.py
但它导致了尾随}。
输出是
}
我知道它匹配的模式适用于第一个花括号,而不是第二个。这应该是什么方法。
为什么不在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
,以便这些设置不会推送到存储库。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句