在python中运行linux和SQL命令

2024-06-16 12:08:10 发布

您现在位置:Python中文网/ 问答频道 /正文

有人能帮我用python执行下面的代码行吗?在

cat /home/dbadmin/super_app/data/file_name.spool | vsql database -U user -w 'password' -c "copy schema.table from stdin direct no escape null as '\N'" 

Tags: 代码nameapphomedatapassworddatabasecat
2条回答

Python的subprocess库支持管道。以下代码只是对documentation example进行了一点修改:

from subprocess import Popen, PIPE

p1 = Popen(["cat", "/home/dbadmin/super_app/data/file_name.spool"],
           stdout=PIPE)
p2 = Popen(["vsql", "database", "-U", "user", "-w", "password",
            "-c", "copy schema.table from stdin direct no escape null as '\\N'"],
           stdin=p1.stdout,
           stdout=PIPE)
p1.stdout.close()  # Allow p1 to receive a SIGPIPE if p2 exits.
output = p2.communicate()[0]

我还没有测试以上代码,所以可能有一些拼写错误。在

这是Python优秀的subprocess库的完美工作。您可以运行如下shell命令:

subprocess.call("YOURCOMMANDHERE", shell=True)

这将返回一个returncode,这样就可以知道命令是否成功完成。如果需要命令的输出,可以使用其他子进程函数:

^{pr2}$

它将以字符串形式返回命令输出。阅读有关此库的更多信息in the python docs

相关问题 更多 >