有人可以幫助我在python中執行下面的代碼行嗎?在python中運行linux和SQL命令
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'"
有人可以幫助我在python中執行下面的代碼行嗎?在python中運行linux和SQL命令
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'"
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
所以你知道,如果命令成功地完成。如果需要從命令輸出,則可以使用不同的子進程功能:
subprocess.check_output("YOURCOMMANDHERE")
這將以字符串形式返回命令輸出。閱讀關於此庫的更多信息in the python docs
提示:'subprocess','shell = True'。 – devnull