成功写入后删除现有文件

时间:2019-11-13 15:25:53

标签: python pg-dumpall

我正在用python脚本执行每日数据库转储,我正在寻找最有效的python方法,仅在成功写入最新文件后删除当前文件,即删除backup-12-11-2019.sql仅在成功创建备份13-11-2019之后

2 个答案:

答案 0 :(得分:1)

您可以使用try:...except:...esle:作为以下代码。

import datetime
import os
now = datetime.datetime.utcnow()
try:
    pg_dumpall('-h', DB_HOST, '-U', DB_USERNAME, '-p', DB_PORT, _out=BACKUP_FOLDER + 'backup-' + str(now.day) + '-' + str(now.month) + '-' + str(now.year) + '.sql')
except Exception as e:
    print(e)
else:
    previous_day = now - datetime.timedelta(days=1)
    os.remove(BACKUP_FOLDER + 'backup-' + str(now.day - 1) + '-' + str(now.month) + '-' + str(now.year) + '.sql')

如果pg_dumpall没有升高,而Exception则会删除以前的备份文件

最诚挚的问候

答案 1 :(得分:0)

来自DBA StackExchange

    pg_dumpall -U pg_user > /tmp/tmp.txt
    DUMP_STATUS=$?
    echo "Dump status: $DUMP_STATUS" > /tmp/status.txt

还有SO: Get return value

    subprocess.check_output([SCRIPT, "-d", date], shell=True).

我们能够提出一些可以运行您要运行的命令并同时检查其返回值的东西。

    output = subprocess.check_output(['pg_dumpall', '-h', DB_HOST, '-U', DB_USERNAME, '-p', DB_PORT], stdout=outfile)
    if output == 0:
        print("Success")
        os.remove(oldfile)
    else:
        print("Failure")