尝试使用SED使用新值更新settings.py文件。
原创部分。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
应该是什么样的。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'myproject',
'USER': 'myprojectuser',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '',
}
}
我已经涉足以下问题,一行一行,但不确定这是最好的方法。我的第二个sed命令似乎也不起作用。
sed -e 's/sqlite3/mysql/g' -e 's/'NAME':.*/'myproject'/g'
答案 0 :(得分:1)
awk 解决方案:
awk 'function pr(sp, k, v){ # prints key-value pair with indentation
printf "%s\047%s\047: \047%s\047,\n",sp,k,v;
}
/sqlite/{ sub(/sqlite[0-9]*/,"mysql",$0) }
/NAME/{ sp=substr($0,1,index($0,"\047")-1);
print sp$1" \047myproject\047,";
pr(sp,"USER","myprojectuser"); pr(sp,"PASSWORD","password");
pr(sp,"HOST","localhost"); pr(sp,"PORT",""); next
}1' settings.py
输出:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'myproject'
'USER': 'myprojectuser',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '',
}
}
答案 1 :(得分:0)
使用sed:
sed '/\x27ENGINE\x27: \x27django.db.backends.sqlite3\x27,/!b;N;g;r out' input
out
文件的内容应为:
'ENGINE': 'django.db.backends.mysql',
'NAME': 'myproject',
'USER': 'myprojectuser',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '',