使用Python备份MySQL数据库

时间:2010-06-21 21:02:15

标签: python mysql

我正在尝试编写一个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文件保存为备份日期。

2 个答案:

答案 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使其在预定时间运行。