我正在尝试在python中运行这样的命令:
subprocess.call(['psql', '--username=openerp', '--dbname=sf_template', '--no-password', '--command="select pg_terminate_backend(procpid) from pg_stat_activity where datname = \'sf_template\' and procpid <> pg_backend_pid()"'], env={'PGPASSWORD': 'mypassword'})
我得到以下详细输出:
psql: FATAL: password authentication failed for user "<myCurrentOSuser>"
但是如果我通过shell运行这个命令:
PGPASSWORD=mypassword
psql --username=openerp --dbname=sf_template --no-password --command="select pg_terminate_backend(procpid) from pg_stat_activity where datname = 'sf_template' and procpid <> pg_backend_pid()"
它运作正常。
为什么?我在这里缺少什么?
答案 0 :(得分:0)
(感谢前三位评论者 - 我在你的帮助下解决了这个问题。)
我将整个参数发送到subprocess.call
作为一个单独的字符串(不完全理解数组语法)。
subprocess.call(['psql --username=openerp --dbname=sf_template --no-password --command="select pg_terminate_backend(procpid) from pg_stat_activity where datname = \'sf_template\' and procpid <> pg_backend_pid()"'], env={'PGPASSWORD': 'mypassword'})