[英]mysqldump single table from python subprocess
我正在嘗試通過 mysqldump 從在 Ubuntu 上運行的 python 腳本中轉儲單個表。
args = ["mysqldump", f"-u{DBUser}", f"-h{DBHost}", f"-p{DBPass}", "--no-tablespaces", f'{DatabaseName}', f'{ArchiveTable}', '>', f'{BucketReadyName}']
subproc_output = subprocess.run(args)
這段代碼給出了這個錯誤。
mysqldump: Couldn't find table: ">"
我嘗試了幾種不同的安排,但 mysqldump 總是期望另一個表名而不是表列表的末尾。
我需要做些什么不同的事情? 這是字符 escaping 問題嗎?
>
不是命令參數,它是 shell 語法的一部分。 由於您在調用subprocess.run()
時沒有使用shell=True
,因此它將不起作用。
您可以使用 subprocess.run subprocess.run()
的stdout
參數來重定向到文件,而不是使用 shell 重定向。
args = ["mysqldump", f"-u{DBUser}", f"-h{DBHost}", f"-p{DBPass}", "--no-tablespaces", f'{DatabaseName}', f'{ArchiveTable}']
with open(BucketReadyName, 'w') as outfile:
subprocess.run(args, stdout=outfile)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.