我试图使用设置文件上的数据库配置集使用fabric进行数据库转储。在
有多个设置文件,所以我希望能够根据我选择的环境进行设置。在
现在,我的任务是这样的
def dump_database():
with cd('~/project_folder'), prefix(WORKON_VIRTUALENV):
django.settings_module(env.settings)
from django.conf import settings
dbname = settings.DATABASES['default']['NAME']
dbuser = settings.DATABASES['default']['USER']
dbpassword = settings.DATABASES['default']['PASSWORD']
fname = '/tmp/{0}-backup-{1}.sql.gz'.format(
dbname,
time.strftime('%Y%m%d%H%M%S')
)
run('mysqldump -u %s -p=%s %s | gzip -9 /tmp/backup-%s.sql.gz' % (
dbuser,
dbpassword,
dbname,
fname))
但我有一件事很重要:
^{pr2}$我尝试使用shell_env()来设置DJANGO_SETTINGS_模块,而不是django.settings_模块(环境设置),结果相同。在
我使用一个任务根据环境指令更改环境:
def environment(name):
env.update(environments[name])
env.environment = name
这样,我希望能够从多个主机创建转储,例如:
fab environment:live dump_database
fab environment:otherhost dump_database
不必在fabfile上从所有主机复制数据库设置。在
这里解释如何在fabric中导入Django设置文件。 http://fabric.readthedocs.org/en/1.3.3/api/contrib/django.html
引自以上链接:
注意:我不回答问题,但提供了不同的解决方案
我也有同样的问题。。所以我做了这样的自定义.py脚本:
我创建了一个名为dump的文件_数据库(放在旁边工厂文件.py例如,在远程计算机上)
如你所见系统argv[1:].pop()尝试使用可选参数(本例中为设置模块)。在
所以在我的fabfile中: 导入操作系统
^{pr2}$在哪里环境='项目_名称.设置.环境模块'
这就是我如何转储我的数据库,并复制回我。在
希望它对某人有用!:)
相关问题 更多 >
编程相关推荐