python - PERL 脚本的输出未使用 Python 加载到 MySQL

标签 python mysql perl

我有一个 Python 脚本,它调用 Perl 脚本 来解析文件。解析后,PERL 脚本会生成一个输出,该输出将加载到 Python 脚本中的 MySQL 数据库。

Python 脚本如下:

pipe = subprocess.Popen(["perl", "./parseGeneticCode.pl"], stdin=subprocess.PIPE)
pipe.stdin.close()
pipe = subprocess.Popen(["perl", "./makeTaxon.pl"], stdin=subprocess.PIPE)
pipe.stdin.close()

#Load taxon.out (output of makeTaxon.pl) in the database
sql10 = """LOAD DATA LOCAL INFILE 'gene_code.out' INTO TABLE geneticcode FIELDS TERMINATED BY '\t' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' (ncbi_taxon_ID, parent_ID, taxon_name, taxon_strain, rank, geneticcode_ID, mitochondrial_geneticcode_ID);"""
try:
  c.execute(sql10)
  conn.commit()
  print "\nDone uploading in taxon\n"
except StandardError, e:
  print e
  conn.rollback()
conn.close()

sql9 = """LOAD DATA LOCAL INFILE 'taxon.out' INTO TABLE taxon FIELDS TERMINATED BY '\t' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' (ncbi_taxon_ID, parent_ID, taxon_name, taxon_strain, rank, geneticcode_ID, mitochondrial_geneticcode_ID);"""
try:
  c.execute(sql9)
  conn.commit()
  print "\nDone uploading in taxon\n"
except StandardError, e:
  print e
  conn.rollback()
conn.close()

这些文件:taxon.outgene_code.out 由 perl 脚本创建。但我的 Python 脚本出现错误:

(2, "File 'taxon.out' not found (Errcode: 2)")
(0, '')
Traceback (most recent call last):
  File "common_data.py", line 247, in <module>
    conn.rollback()
_mysql_exceptions.OperationalError: (2006, 'MySQL server has gone away')

文件 gene_code.outtaxon.out 均未上传。

最佳答案

您需要显式配置 MySQL 服务器和客户端才能使用LOAD DATA LOCAL。请参阅讨论in the documentation .

关于python - PERL 脚本的输出未使用 Python 加载到 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18947046/

相关文章:

mysql - 从一个表中获取所有行的列表,满足两个不同表中的多个条件

perl - 为什么我对单个字符的字符串相等性测试不起作用?

mysql - null 的警报数量小于特定值

mysql - 如何在 MySQL Workbench 中禁用 SSL 要求?

regex - Perl 正则表达式捕获组和重新排列模式

perl - 如何使用 Perl、DBI 和占位符插入到 PostgreSQL 中?

Python 访问 BaseRequestHandler

python - 如何在 Python 中更新现有文本文件?

python - len 和 str.splitlines() 的奇怪行为

python - Gevent.monkey.patch_all 破坏依赖于 socket.shutdown() 的代码