Mysql 为什么Python子流程在命名管道中不能按预期工作?

Mysql 为什么Python子流程在命名管道中不能按预期工作?,mysql,python-3.x,subprocess,pipe,pv,Mysql,Python 3.x,Subprocess,Pipe,Pv,我正在使用python子进程运行mysqlimport命令。为了跟踪上传进度,我使用了一个命名的管道和管道查看器。 这是另一个类似的例子 子流程管道正在运行,没有任何错误,但mysqlimport命令没有将数据上载到所需的表 导入子流程、操作系统、系统 os.mkfifo('命名管道') pv=子流程Popen( [“pv”、“-f”、“file.csv”、“>”、“命名管道”], stdout=子流程.PIPE, stderr=子流程.PIPE, ) pro=子进程.Popen( [“mysq

我正在使用python子进程运行mysqlimport命令。为了跟踪上传进度,我使用了一个命名的管道和管道查看器。 这是另一个类似的例子

子流程管道正在运行,没有任何错误,但mysqlimport命令没有将数据上载到所需的表

导入子流程、操作系统、系统 os.mkfifo('命名管道') pv=子流程Popen( [“pv”、“-f”、“file.csv”、“>”、“命名管道”], stdout=子流程.PIPE, stderr=子流程.PIPE, ) pro=子进程.Popen( [“mysqlimport”、“--ignore line=1”、“--fields终止于=\”、\”, --本地“,-u”,“根”-pRoot@123,“数据库名称”,命名为“\u管道], stdin=pv.stdout, ) pv.stdout.close() 这是一个简单的mysqlimport命令,该命令运行良好,正在上载数据,但没有pipe_viewer,无法跟踪进度:

pro = subprocess.Popen(
["mysqlimport", "--ignore-lines=1", "--fields-terminated-by=\',\'",
 "--local", "-u", "root", "-pRoot@123", "database_name", "file.csv"], 
stdout=subprocess.PIPE
)
以下是使用pipe_viewer和mysqlimport的terminal命令,该命令工作正常:

$ mkfifo named_pipe

$ pv -f file.csv > named_pipe | mysqlimport --ignore-lines=1 --fields-terminated-by=',' --local -u root -pRoot@123 database_name named_pipe

要使“>”重定向正常工作,您很可能需要将“shell=True”设置为Popen函数。

提示:为了更好地管理管道/q,请使用此引用的代码的哪一部分?Hi Daid,我在第一个子流程中设置了shell=True,但仍然没有任何进展。此外,这说明情况并非如此。请看你是否能在代码中找到其他漏洞。