簡體   English   中英

mysqldump 來自 python 子進程的單表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM