从 PERL 脚本获取输出并将其加载到 MySQL 数据库的解决方案

news2025/7/15 4:29:41

在这里插入图片描述

1、问题背景

有一段 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 都没有被上传到数据库中。

2、解决方案

在 Python 脚本中,使用 subprocess.Popen() 函数来调用 Perl 脚本时,需要在 Popen() 函数的 stdout= 参数中设置一个管道,以便将 Perl 脚本的输出重定向到该管道中。这样,就可以在 Python 脚本中读取 Perl 脚本的输出,并将其加载到 MySQL 数据库中。

修改后的 Python 脚本如下:

pipe = subprocess.Popen(["perl", "./parseGeneticCode.pl"], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
pipe.stdin.close()
pipe_output = pipe.stdout.read()
#Load gene_code.out (output of parseGeneticCode.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()

pipe = subprocess.Popen(["perl", "./makeTaxon.pl"], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
pipe.stdin.close()
pipe_output = pipe.stdout.read()
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()

现在,运行此 Python 脚本,文件 gene_code.outtaxon.out 将被成功加载到 MySQL 数据库中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1822335.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【方法】如何解除PDF“打开密码”?

很多人会给PDF文件设置密码保护&#xff0c;防止文件被随意打开。那如果后续想要解除“打开密码”&#xff0c;如何操作呢&#xff1f; 首先&#xff0c;我们要分两种情况来看&#xff0c;一种是知道密码的情况下&#xff0c;不需要保护文件了&#xff0c;也就是不想每次打开P…

Requests —— 请求头设置!

前戏 在我们进行自动化测试的时候&#xff0c;很多网站都会都请求头做个校验&#xff0c;比如验证 User-Agent&#xff0c;看是不是浏览器发送的请求&#xff0c;如果我们不加请求头&#xff0c;使用脚本访问&#xff0c;默认User-Agent是python&#xff0c;这样服务器如果进行…

警告:Hydration attribute mismatch on Note: this mismatch is check-only.(水合不匹配)

vue3Nuxt3运行代码是提示如下警告 [Vue warn]: Hydration attribute mismatch on <ul id​"sub_menu_5_$$_sub1-popup" class​"ant-menu ant-menu-sub ant-menu-inline" data-menu-list​"true" style​"display:​none;​">​…

Python网络爬虫5-实战网页爬取

1.需求背景 在上一篇Python网络爬虫4-实战爬取pdf中&#xff0c;以松下品牌说明书为例说明了网页爬取PDF的分析流程。在实际的应用中&#xff0c;具体代码需要根据不同的网址情况和需求进行更改。 明确要求&#xff1a; 此次&#xff0c;想要爬取苏泊尔品牌下的说明书pdf&…

学习ZYNQ——使用IP核

文章目录 [TOC](文章目录) 前言一、新建Vivado工程二、使用IP核1.加载IP2.查看IP核3.应用IP核 三、添加源文件1.led.v2.约束文件pin_led.xdc 四、综合、运行程序 前言 加载前面使用HLS生成的IP核&#xff0c;实现LED灯的闪烁&#xff0c;熟悉整套流程的步骤&#xff1a; 前一篇…

C++面向对象程序设计 - 命名空间

命名空间是ANSI C引入的可以由用户命名的作用域&#xff0c;用来处理程序中常见的同名冲突。 在C语言中定义了三个层次的作用域&#xff0c;即文件&#xff08;编译单元&#xff09;、函数和复合语句。C又引入了类作用域&#xff0c;类是出现在文件内的。在不同的作用域中可以定…

C# WPF入门学习主线篇(二十九)—— 绑定到对象和集合

C# WPF入门学习主线篇&#xff08;二十九&#xff09;—— 绑定到对象和集合 在WPF中&#xff0c;数据绑定是开发动态和交互性用户界面的核心技术。通过数据绑定&#xff0c;我们可以轻松地将UI控件与后台的数据源连接起来&#xff0c;实现数据的自动更新和显示。在本篇文章中&…

618有哪些值得入手的电子产品,个个都是心头爱!

今年的618购物节目已经开启&#xff01;你们期待的购物节就要到了&#xff0c;是不是已经跃跃欲试&#xff0c;准备开启购物模式了呢&#xff1f;别急&#xff0c;今天我就给大家带来了一份2024年618电子产品的好物清单&#xff0c;让你们购物不迷茫&#xff0c;轻松选到心仪的…

超声波清洗机对眼镜有伤害吗?四大超值不踩雷超声波清洗机安利

眼镜是现代人生活中的必备物品&#xff0c;但是很多人可能对于如何正确清洗眼镜感到困惑。传统的清洗方法可能会在清洗过程中对眼镜造成损坏&#xff0c;例如使用普通肥皂或清水清洗时容易划伤镜片。为了解决这个问题&#xff0c;家用眼镜超声波清洗机应运而生。超声波清洗机利…

逻辑斯谛回归与最大熵模型的原理实现

逻辑斯谛回归(LR)是经典的分类方法 1&#xff0e;逻辑斯谛回归模型是由以下条件概率分布表示的分类模型。逻辑斯谛回归模型可以用于二类或多类分类。 P ( Y k ∣ x ) exp ⁡ ( w k ⋅ x ) 1 ∑ k 1 K − 1 exp ⁡ ( w k ⋅ x ) , k 1 , 2 , ⋯ , K − 1 P(Yk | x)\frac{\…

RT-thread内核对象的基础应用

RT-thread的内核对象基础应用 启动流程&#xff1a; 以RT-Thread Studio为例&#xff0c;用户程序入口为位于 main.c 文件中 的main 函数。系统启动后先运行startup_stm32f103xe.s文件中的汇编代码&#xff0c;运行“bl entry”指令后跳转到components.c 文件中调用entry函数&a…

关于印发农业中央预算内投资专项管理办法的通知

国家发展改革委关于 印发农业中央预算内投资专项 管理办法的通知 发改农经规〔2024〕744号 农业农村部、海关总署、国家林草局&#xff0c;各省、自治区、直辖市及计划单列市、新疆生产建设兵团发展改革委&#xff0c;北大荒农垦集团有限公司&#xff1a; 为全面贯彻党的二十…

AI时代的程序员,复合型技术大咖该具备哪些本领与魅力?

AI时代对程序员和互联网时代对程序员的要求有不同 在AI时代的今天&#xff0c;程序员所面临的挑战已经有了翻天覆地的变化。 与互联网时代相比&#xff0c;AI时代对程序员的要求更为全面与多元化 回顾互联网时代&#xff0c;程序员主要需要掌握技术的专业知识和编程技能。他…

安卓/iOS/Linux系统影音边下边播P2P传输解决方案

在当今的数字时代&#xff0c;IPTV 影音行业正经历着快速的发展和变革&#xff0c;但影音行业的流量带宽成本一直很高&#xff0c;有没有什么办法既能保证现有的用户观看体验&#xff0c;又能很好降低流量带宽成本呢? P2P技术可能是一个很好的选择&#xff0c;它不仅仅可以提…

vue+showdown展示Markdown 文本

前言&#xff1a; vueshowdown展示Markdown 文本&#xff0c;资料整理 使用教程-vditor&#xff1a; 1、安装 npm install vditor --save 2、使用 <template><div id"vditor" name"description" ></div> </template> <scri…

Ransac(随机抽样一致性算法)多项式拟合附近的点

Ransac&#xff08;随机抽样一致性算法&#xff09;多项式拟合附近的点 RANSAC&#xff08;RANdom SAmple Consensus&#xff09;算法是一种用于拟合数学模型的迭代方法&#xff0c;尤其适用于对数据中有噪声的情况。RANSAC的核心思想是通过迭代从数据集中随机抽取一小部分样本…

计算机图形学入门11:图形管线与着色器

1.什么是图形管线 把场景中的物体经过一系列的处理&#xff0c;最后一张图像的形式在屏幕上显示出来&#xff0c;这一系列过程就是图形管线(Graphics Pipeline)&#xff0c;也叫实时渲染管线(Real-time Rendering Pipeline)。如下图所示&#xff0c;为整个渲染管线的过程。 渲染…

Python:从头创建 Asyncio (2)

引言 现在&#xff0c;asyncio 已成为 Python 社区中的热门话题&#xff0c;并且名副其实——它提供了一种非常出色的处理 I/O 密集型程序的方法&#xff01;在我探索 asyncio 的过程中&#xff0c;我起初并不太明白它的工作原理。但随着深入学习&#xff0c;我意识到 asyncio …

go interface

package mainimport "fmt"// 接口 interface func main() {c : Chinese{} //创建一个中国人实例u : American{} //创建一个美国人实例greet(c) //中国人打招呼greet(u) //美国人打招呼 }// 接收具备SayHello接口能力的变量 func greet(s SayHello) {…

sslh一键在一个端口上运行多个服务(KALI工具系列二十三)

目录 1、KALI LINUX 简介 2、sslh工具简介 3、信息收集 3.1 目标主机IP&#xff08;win&#xff09; 3.2 KALI的IP 4、操作示例 4.1 监听特定端口 4.2 配置SSH 4.3 配置apache 4.4 配置sshl 4.5 验证配置 5、总结 1、KALI LINUX 简介 Kali Linux 是一个功能强大、…