我需要在Windows上从 Python 执行以下命令:
psql -h localhost -p 5432 -U postgres -f script.sql db_name
从 git bash / powershell 运行时,上述脚本工作正常。在终端中输入脚本后,我需要提供一个密码来确认(类似于使用时sudo
)。
我怎样才能做到这一点?我一直在寻找我认为基于 linux 的解决方案。
我如何在 Windows 上执行此操作?我尝试了许多涉及的解决方案变体subprocess
,即:
import subprocess
p2 = subprocess.Popen(
'psql -h localhost -p 5432 -U postgres -f script.sql db_name',
stdin=subprocess.PIPE,
stderr=subprocess.PIPE,
universal_newlines=True)
print('this will print')
sudo_prompt = p2.communicate('THE_PASSWORD' + '\n')[1]
print('this will not')
比psql
明确提及您的密码进行调用更好的选择(更安全)是拥有一个.pgpass
如 docs文件中所述的文件(并对其进行保护,例如chmod 600 ~/.pgpass
)。这使您的密码不在正在运行的进程列表中。
在 Windows 上:
在 Microsoft Windows 上,文件被命名
%APPDATA%\postgresql\pgpass.conf
(其中%APPDATA%
指的是用户配置文件中的应用程序数据子目录)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句