在 Linux 中写入文件时出现“IOError:[Errno 32] Broken pipe”。
我正在使用 python 读取 csv 文件的每一行,然后写入数据库表。我的代码是
f = open(path,'r')
command = command to connect to database
p = Popen(command, shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE, env=env)
query = " COPY myTable( id, name, address) FROM STDIN WITH DELIMITER ';' CSV QUOTE '"'; "
p.stdin.write(query.encode('ascii')) *-->(Here exactly I got the error, p.stdin.write(query.encode('ascii'))
IOError: [Errno 32] Broken pipe )*
因此,当我在 Linux 中运行此程序时,出现错误“IOError: [Errno 32] Broken pipe”。但是,当我在 Windows7 中运行时,此程序运行正常。
我需要在 Linux 服务器上做一些配置吗?
任何建议都将受到赞赏。谢谢。
答案1
您的管道已损坏 - 子进程已退出。您用于连接数据库的命令已完成。
这可能是与数据库通信的最糟糕的方式。使用与所讨论的数据库类型对应的本机库。我甚至不会尝试列举这种做法不好的所有原因……只需更改它即可。相信我。