gpt4 book ai didi

python - 通过 Python 的 subprocess 模块运行 mysqldump 既慢又冗长

转载 作者:行者123 更新时间:2023-11-29 07:11:57 28 4
gpt4 key购买 nike

@cost_time
def dbdump_all():
"导出数据库所有数据至当前目录下以年月日命名的sql文件"
filename=datetime.datetime.now().strftime("%Y-%m-%d")
cmd="""mysqldump -u root -pzhoubt --opt --quick --database search > ./%s.sql"""%filename
args=shlex.split(cmd)
p=subprocess.Popen(args)
#stdout, stderr = p.communicate()
#print stdout,stderr
print "已将数据库表结构和数据导出到%s"%filename

我在子进程中使用了mysqldump 命令,它输出了很多关于导出数据的信息,即使我注释掉了stdout, stderr = p.communicate()行。它也非常慢,即使我在 shell 中尝试过相同的命令并且它非常快速和简洁。如何避免使用 subprocess 时的所有冗长,并加快运行速度,使其更像是直接从 shell 运行?

最佳答案

@cost_time
def dbdump_all():
"导出数据库所有数据至当前目录下以年月日命名的sql文件"
filename=datetime.datetime.now().strftime("%Y-%m-%d")+".sql"
cmd="""mysqldump -u root -pzhoubt --opt --quick --database search >./%s"""%filename
print cmd
p=subprocess.Popen(cmd,shell=True,cwd=os.getcwd())
sts = os.waitpid(p.pid, 0)[1]
print "返回状态%s"%sts
print "已将数据库表结构和数据导出到%s"%filename

终于明白了关键是我们os.waitpid等待mysql处理,另一点是当你使用 shell 时,cmd 是一个字符串而不是列表

关于python - 通过 Python 的 subprocess 模块运行 mysqldump 既慢又冗长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3920473/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com