【问题标题】:mysqldump single table from python subprocess来自python子进程的mysqldump单表
【发布时间】:2021-03-25 07:29:38
【问题描述】:

我正在尝试通过 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 总是需要另一个表名而不是表列表的末尾。

我需要做些什么不同的事情?这是字符转义问题吗?

【问题讨论】:

    标签: python mysql subprocess


    【解决方案1】:

    > 不是命令参数,它是 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)
    

    【讨论】:

      猜你喜欢
      • 2013-07-27
      • 2011-04-05
      • 1970-01-01
      • 2012-11-15
      • 2018-12-15
      • 1970-01-01
      • 1970-01-01
      • 2012-01-03
      相关资源
      最近更新 更多