mysqldump 单个 table 来自 python 子进程
mysqldump single table from python subprocess
我正在尝试通过 mysqldump 从 Ubuntu 上的 运行 脚本 运行 中转储单个 table。
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 总是需要另一个 table 名称,而不是 table 列表的末尾。
我需要做哪些不同的事情?这是字符转义问题吗?
>
不是命令参数,它是 shell 语法的一部分。由于您在调用 subprocess.run()
时没有使用 shell=True
,因此它不会起作用。
您可以使用 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)
我正在尝试通过 mysqldump 从 Ubuntu 上的 运行 脚本 运行 中转储单个 table。
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 总是需要另一个 table 名称,而不是 table 列表的末尾。
我需要做哪些不同的事情?这是字符转义问题吗?
>
不是命令参数,它是 shell 语法的一部分。由于您在调用 subprocess.run()
时没有使用 shell=True
,因此它不会起作用。
您可以使用 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)