我正在尝试编写一个python脚本,每隔午夜备份一次数据库。我正在使用的代码如下:
from subprocess import call
call (["mysqldump", "-u", "root", "-p*****", "normalisation", ">", "date_here.sql"])
我遇到的第一个问题是mysql认为“>”是一个表,当它不是时,从命令行运行它时查询工作正常(见下文)
$ mysqldump -u root -p ***** normalization> date_here.sql
$ ls
backup.py date_here.sql
$
其次,如何让脚本自动运行每个午夜? 第三,我需要将.sql文件保存为备份日期。
答案 0 :(得分:1)
您的命令失败,因为输出重定向是shell的函数,而不是mysqldump
。尝试使用Popen而不是call,如下所示:
from subprocess import Popen
f = open( "date_here.sql", "w" )
x = Popen( ["mysqldump", "-u", "root", "-p*****", "normalisation"], stdout = f )
x.wait()
f.close()
这将允许您在程序中处理重定向到stdout。
答案 1 :(得分:0)
使用shell脚本。有一百万人已经在线完成这项任务。您可以使用带有正确格式字符串的date
命令生成文件名,并且可以使用cron使其在预定时间运行。