我一直在寻找如何做到这一点而没有任何成功。我继承了一个python脚本,用于在我们的数据库上执行每小时备份。原始脚本太慢,所以我尝试更快的实用程序。如果键入shell,我的新命令将如下所示:
pg_basebackup -h 127.0.0.1 -F t -X f -c fast -z -D - --username=postgres > db.backup.tgz
问题是原始脚本使用call(cmd)
,如果上面是cmd字符串,则会失败。我一直在寻找如何修改它以使用popen,但找不到任何使用文件创建重定向的示例,如
>
。如图所示的pg_basebackup将输出到stdout。我到目前为止成功的唯一方法是将-D -
更改为-D some.file.tgz
,然后将文件移至存档,但我宁愿一步完成。
杰
答案 0 :(得分:0)
可能是这样的吗?
with open("db.backup.tgz","a") as stdout:
p = subprocess.Popen(cmd_without_redirector, stdout=stdout, stderr=stdout, shell=True)
p.wait()
答案 1 :(得分:0)
嗯...... pg_basebackup可执行文件必须能够附加到该文件。如果我以你建议的方式打开文件,我不知道python中的正确语法能够做到这一点。如果我尝试在字符串中使用“>”或“>>”来调用cmd(),python就可以了。这是我真正的问题,我没有找到任何指导。