postgres命令在shell中工作但不在python脚本中工作

时间:2013-09-16 04:40:59

标签: python postgresql

我正在尝试使用python脚本中的转储文件创建一个postgres数据库。

以下是我尝试过的代码:

cmd='cat dump.sql.gz | zcat - | PGPASSWORD=my_password psql -d voylla_solr -h localhost -p 5432 -U user_name'
args = shlex.split(cmd)
p=subprocess.Popen(args)
p.wait()

我也尝试过使用不同的命令:

cat dump.sql | PGPASSWORD=my_password psql -d voylla_solr -h localhost -p 5432 -U user_name

编辑*:我使用了以下命令:

subprocess.Popen("zcat dump.sql.gz | PGPASSWORD=my_password psql -d voylla_solr -h localhost -p 5432 -U user_name", shell=True);

它可以工作,但在创建数据库后它不会停止。如何在创建数据库操作系统后停止执行?

这两个命令都在命令行中运行,但在python脚本中没有。我做错了什么

1 个答案:

答案 0 :(得分:1)

你可以简单地说:

subprocess.Popen("zcat dump.sql.gz | PGPASSWORD=my_password psql -d voylla_solr -h localhost -p 5432 -U user_name", shell=True);

(另请参阅this。)