基于Python的表格数据导入方法、装置、设备及存储介质与流程

未命名 08-15 阅读:112 评论:0
基于python的表格数据导入方法、装置、设备及存储介质
技术领域
:1.本发明涉及互联网
技术领域
:,尤其涉及一种基于python的表格数据导入方法、装置、设备及计算机可读存储介质。
背景技术
::2.在项目开发过程中,测试人员使用excel表格来存储测试用例,使用svn对每个版本的测试用例进行管理。3.传统的技术方案一般是先将excel表格中存储的数据另存为csv格式(通用的、相对简单的文件格式),利用python中sqlite库的import命令,将所述excel表格中存储的数据从所述excel表格导入到csv格式的excel表格中,使用sqlite库连接所述csv格式的excel表格与目标数据库,通过sql语句将所述csv格式excel表格中存储的数据导入目标数据库。4.为了防止所述excel表格导入数据库时会出现乱码,目前的表格导入方法,在将excel表格导入数据库时,通常需要用户手动创建数据库表格,因此,目前的表格导入方法在需导入数据量庞大的excel表格时,不仅操作步骤繁多,而且对用户具有较高的专业要求,不适用于非专业人员,整个过程消耗较高的人力和较长工时,降低了表格的导入效率。技术实现要素:5.本发明的主要目的在于提供一种基于python的表格数据导入方法、装置、设备及计算机可读存储介质,旨在解决现有表格数据导入效率低下的技术问题。6.为实现上述目的,本发明提供一种基于python的表格数据导入方法,所述方法包括:7.接到用户对excel表格的属性操作指令后,使用python调用openpyxl库,对所述excel表格中的属性数据进行处理,生成目标表格属性数据;8.接到用户对所述excel表格的内容操作指令后,使用所述python调用pandas库,对所述excel表格中的内容数据进行处理,生成目标表格内容数据;9.通过所述pandas库中read_excel函数读取所述目标表格属性数据和目标表格内容数据,并将其存储到所述pandas库中的dataframe对象;10.调用所述python中sqlite库的sqlite3命令,连接所述dataframe对象调用的接口和目标数据库;11.使用所述pandas库中的to_sql函数,将存储在所述dataframe对象中的所述目标表格属性数据和目标表格内容数据导入所述目标数据库,生成目标数据库表格。12.此外,为实现上述目的,本技术还提供了一种基于python的表格数据导入装置,所述基于python的表格数据导入包括:13.属性数据处理模块,用于接到用户对excel表格的属性操作指令后,使用python调用openpyxl库,对所述excel表格中的属性数据进行处理,生成目标表格属性数据;14.内容数据处理模块,用于接到用户对所述excel表格的内容操作指令后,使用所述python调用pandas库,对所述excel表格中的内容数据进行处理,生成目标表格内容数据;15.读取数据处理模块,用于通过所述pandas库中read_excel函数读取所述目标表格属性数据和目标表格内容数据,并将其存储到所述pandas库中的dataframe对象;16.连接数据处理模块,用于调用所述python中sqlite库的sqlite3命令,连接所述dataframe对象调用的接口和目标数据库;17.导入数据处理模块,用于使用所述pandas库中的to_sql函数,将存储在所述dataframe对象中的所述目标表格属性数据和目标表格内容数据导入所述目标数据库,生成目标数据库表格。18.此外,为实现上述目的,本发明还提供一种基于python的表格数据导入设备,所述基于python的表格数据导入设备包括处理器、存储器、以及存储在所述存储器上并可被所述处理器执行的基于python的表格数据导入程序,其中所述基于python的表格数据导入程序被所述处理器执行时,实现如上述的基于python的表格数据导入方法的步骤。19.此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有基于python的表格数据导入程序,其中所述基于python的表格数据导入程序被处理器执行时,实现如上述的基于python的表格数据导入方法的步骤。20.本发明提供一种基于python的表格数据导入方法,所述方法包括接到用户对excel表格的属性操作指令后,使用python调用openpyxl库,对excel表格中的属性数据进行处理,生成目标表格属性数据;接到用户对excel表格的内容操作指令后,使用所述python调用pandas库,对所述excel表格中的内容数据进行处理,生成目标表格内容数据;通过所述pandas库中read_excel函数读取所述目标表格属性数据和目标表格内容数据,并将其存储到所述pandas库中的dataframe对象;调用所述python中sqlite库的sqlite3命令,连接所述dataframe对象调用的接口和目标数据库;使用所述pandas库中的to_sql函数,将存储在所述dataframe对象中的所述目标表格属性数据和目标表格内容数据导入所述目标数据库,生成目标数据库表格。通过上述方式,本发明使用python调用openpyxl库对excel表格中的属性数据进行处理,通过使用所述openpyxl库能够读写xltm、xltx、xlsm和xlsx等类型的表格,并且能处理数据量较大的excel表格,解决现有技术表格适配性不高的问题。使用python调用pandas库直接对所述excel表格内容中各种数据进行运算操作,比如归并、再成形、选择,数据清洗和数据加工,提供高性能、易于使用的数据结构和数据分析工具,不需要再手动建立数据库表单实现数据导入。解决了现有表格数据导入效率低下的技术问题。附图说明21.图1为本技术的施例方案中涉及的基于python的表格数据导入设备的硬件结构示意图;22.图2为本技术实施例提供的一种基于python的表格数据导入方法的流程示意图;23.图3为本技术实施例提供的一种基于python的表格数据导入方法第二实施例的流程示意图;24.图4为本技术实施例提供的一种基于python的表格数据导入方法第三实施例的流程示意图;25.图5为本技术实施例提供的一种基于python的表格数据导入方法第四实施例的流程示意图;26.图6为本发明基于python的表格数据导入装置第一实施例的功能模块示意图。27.本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。具体实施方式28.应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。29.本发明实施例涉及的基于python的表格数据导入方法主要应用于基于python的表格数据导入设备,该基于python的表格数据导入生成设备可以是pc、便携计算机、移动终端等具有显示和处理功能的设备。30.参照图1,图1为本发明实施例方案中涉及的基于python的表格数据导入设备的硬件结构示意图。本发明实施例中,基于python的表格数据导入设备可以包括处理器1001(例如cpu),通信总线1002,用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信;用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard);网络接口1004可选的可以包括标准的有线接口、无线接口(如wi-fi接口);存储器1005可以是高速ram存储器,也可以是稳定的存储器(non-volatilememory),例如磁盘存储器,存储器1005可选的还可以是独立于前述处理器1001的存储装置。31.本领域技术人员可以理解,图1中示出的硬件结构并不构成对基于python的表格数据导入设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。32.继续参照图1,图1中作为一种计算机可读存储介质的存储器1005可以包括操作系统、网络通信模块以及基于python的表格数据导入程序。33.在图1中,网络通信模块主要用于连接服务器,与服务器进行数据通信;而处理器1001可以调用存储器1005中存储的基于python的表格数据导入程序,并执行本发明实施例提供的基于python的表格数据导入方法。34.本技术的实施例提供了一种基于python的表格数据导入方法。35.参照图2,图2为本发明基于python的表格数据导入方法第一实施例的流程示意图。36.如图2所示,该基于python的表格数据导入方法包括步骤s10至步骤s50。37.步骤s10、接到用户对excel表格的属性操作指令后,使用python调用openpyxl库,对所述excel表格中的属性数据进行处理,生成目标表格属性数据;38.本实施例中,所述excel表格用于记录每个各版本的测试用例,本技术案例的excel表格测试用例如系统日志v730。所述python是一种面向对象的、解释型的、通用的和开源的脚本编程语言,简单易用,学习成本低。所述python包括很多标准库和第三方库,例如,openpyxl库和pandas库。openpyxl库是支持office-excel文档读写操作的第三方库,能够同时读取和修改excel表格。39.一般情况下将excel表格导入数据库,excel表格的文件保存格式采用csv格式,而csv格式文件是以字符序列形式存储表格数据,如果excel表格的文件数据包含中文,在保存时需要注意编码方式,否则导入数据库时会容易出现乱码。40.其他的excel表格导入数据库方法一般要求导入数据库前的excel表格格式与导入后的excel表格格式相同,而,因此,本实施例中通过openpyxl库对excel表格进行读取或修改,不仅格式兼容性更高,而且相较于采用csv格式的数据库导入方法,本实施例中将excel表格的文件导入数据库时不容易出现乱码。41.在一实施例中,有一些需要导入数据库的excel表格,用户需要对其中一个表格修改,那么将需要修改的excel表格的sheet表名作为索引,openpyxl库将这些excel表格的sheet表名进行排序,在其中标识出需要修改的excel表格的sheet表名,并将sheet表名对应的excel表格进行修改。42.由此,通过所述python调用openpyxl库,使用户能根据实际需要,修改所述sheet表名的属性样式、创建或删除表名,或复制所述sheet表,可以理解的是,可以对复制内容进行具体设置,如允许复制的仅为单元格(包括值、样式、超链接和备注)和一些工作表对象(包括尺寸、格式和参数)会被复制,保证其他属性数据不会被复制,如图片、图表。43.更多实施例中,对所述单元格的编辑操作,包括对所述单元格行列的索引、列名、坐标和数字类型等,所述单元格使用utf-8编码格式;一般单元格的默认样式是normal(正常),但在本实施例中,可供用户根据实际需要对单元格的样式进行修改,包括插入和删除行或者列(插入行或列后,后面的行或列会向后顺延;删除行或列后,后面的行或者列会自动往前填充);对单元格进行个性化设置(包括填充背景颜色、选择字体和边框或数字显示形式,也能自定义设置);对所述单元格进行合并操作(合并后所述单元格只会保留最上角的值,其他所述单元格的值全部为空)。44.在一实施例中,有一些excel表格等待导入数据库,用户需要对其中一个或几个excel表格进行修改sheet表名并插入一列数据,在接收到用户操作触发的指令后,使用openpyxl库将待操作的excel表格的sheet表名进行排序,输入需要修改sheet表名作为索引,物理标识出需要修改sheet表名,将需要修改的这一个或几个excel表格提出来,按照先后顺序将这一个或几个excel表格重新排序,按顺序修改sheet表名并插入一列数据,修改完成后将这一个或几个excel表格对应的修改后的属性数据按照前面的先后顺序存储起来作为目标表格属性数据。45.步骤s20、接到用户对所述excel表格的内容操作指令后,使用所述python调用pandas库,对所述excel表格中的内容数据进行处理,生成目标表格内容数据;46.本实施例中,所述内容操作指令指对所述excel表格内的空值、错误数据和重复数据等内容数据进行相关操作产生的指令。所述pandas库是一种强大的分析结构化数据的工具集,是所述python语言的一个扩展程序库,用于数据分析,它的使用基础是numpy(numpy是高性能的矩阵运算),所述numpy用于数据挖掘和数据分析,同时也提供数据清洗功能。47.所述内容数据指所述excel表格的内容对应的数据,例如,所述excel表格中的重复数据或错误数据等内容。48.所述目标表格内容数据pandas库对所述excel表格的内容数据进行处理后生成的数据,例如,对所述excel表格的进行错误数据或重复数据删除的内容。49.本实施例中,使用所述openpyxl库操作所述excel表格之后,将所述excel表格转到所述pandas库;使用所述pandas库对所述excel表格的内容中各种数据进行数据清洗和数据加工,比如归并、再成形或选择等,所述pandas库为本实施例提供了高性能、易于使用的数据结构和数据分析工具。50.使用所述数据清洗功能对一些没有用的数据进行处理;很多数据集存在数据缺失、数据格式错误、错误数据或重复数据的情况,如果要使数据分析更加准确,计算机就需要对这些没有用的数据进行处理。51.步骤s30、通过所述pandas库中read_excel函数读取所述目标表格属性数据和目标表格内容数据,并将其存储到所述pandas库中的dataframe对象;52.本实施例中,所述pandas库中的dataframe对象是一个表格型的数据结构,包含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型等),所述dataframe即有行索引也有列索引,是sparksql(处理结构化数据的一个模块)模块所需处理的结构化数据的核心抽象。在spark程序(开源集群运算框架)中若想要使用简易的sql接口对数据进行分析,首先需要将所处理数据源转化为所述dataframe对象,进而在所述dataframe对象上调用各种api接口来实现需求。53.本实施例中,使用所述pandas库提供的所述read_excel函数获取所述pandas库处理所述excel表格中的内容;所述read_excel函数有很多参数可以设置,以满足各种格式的excel表格的各种读入需求;所述read_excel函数不仅支持从一种所述excel表格格式中读取数据到所述dataframe对象中,还支持包括xls、xlsx、xlsm、xlsb、df、ods以及odt多种格式,不仅支持读一个sheet,而且支持读取多个sheet,读入之后将所述目标表格数据存储到所述dataframe对象。54.在一实施例中,计算机使用read_excel函数将pandas库中的目标表格属性数据和目标表格内容数据,按照在openpyxl库中的excel表格排序顺序,从每个excel表格中按列读取所有数据,并将数据存储到dataframe对象中。55.步骤s40、调用所述python中sqlite库的sqlite3命令,连接所述dataframe对象调用的接口和目标数据库;56.本实施例中,所述sqlite库提供一个自给自足的、无服务器的、零配置的和事务性的sql数据库引擎;所述sqlite库内置了sqlite3命令,所以能够直接调用所述sqlite3命令。所述sqlite3命令具有非常小、轻量级、几百k大小和占用资源非常少的特点,它不需要用户名和密码,直接就能对数据库进行操作,使用sqlite3命令前需要下载安装,完成配置即可。用户只需要在初始化的时候指定用哪种数据库语言,基于用户指定的目标数据库语言,调用所述dataframe对象,即可根据所述目标数据库语言(dialect)调用对应的目标数据库接口。57.具体实施例中,所述connect函数连接所述dataframe对象的接口和所述目标数据库前,需要使用语句“if_exists=replace”来判断所述目标数据库是否存在;当所述目标数据库存在时,对所述目标数据库中数据表的操作,默认有replace(若所述数据表存在,则将其覆盖)、append(若所述数据表存在,则将所述目标表格数据写到原表的后面)和fail(若所述数据表存在,则不进行数据表写入的相关操作);当所述目标数据库不存在时,通过所述dataframe对象自动创建一个目标数据库。58.在一实施例中,计算机使用sqlite3命令中的connect函数,先判断目标数据库是否存在,目标数据库存在时,将dataframe对象接口对应的pool和dialect和目标数据库接口对应的pool和dialect连接;目标数据库不存在时,dataframe对象会创建一个新的目标数据库,将dataframe对象接口对应的pool和dialect和目标数据库接口对应的pool和dialect连接。59.步骤s50、使用所述pandas库中的to_sql函数,将存储在所述dataframe对象中的所述目标表格属性数据和目标表格内容数据导入所述目标数据库,生成目标数据库表格。60.本实施例中,使用所述pandas库的to_sql函数将所述目标表格数据数据写入所述目标数据库中;所述to_sql函数是所述pandas库中的所述dataframe对象提供的一个api接口或通道,作用是将整个所述dataframe对象导入所述目标数据库中;在此过程中所述pandas库还会给所述dataframe对象生成一个索引,使所述dataframe对象更方便被查询,另外需要避免所述dataframe对象的索引作为数据写入所述目标数据库。61.本实施例中,所述to_sql方法在具体的代码实现过程中所需填写的参数详细内容如下:62.name:用于表示所述excel表格的名称,用户通过名称指定作为输入连接所述目标数据库的是哪一个excel表格。63.con:用于表示所述connect函数与所述目标数据库连接的语句,本实施例中使用sqlalchemy的engine类型。64.schema:使用python调用的数据库的引擎,不设置则使用数据库的默认引擎。65.if_exists:当所述目标数据库中已经存在数据表时对所述数据表的操作,有replace替换、append追加、fail则当表存在时提示valueerror(错误值)。66.index:对所述dataframe对象的index索引的处理,为true时index索引也将作为数据写入所述数据表。67.index_lable:当上一个参数index索引为true时,设置写入所述数据表时所述index索引的列名称。68.chunsize:设置整数,如20000,表示一次写入数据时的数据行数量,当数据量很大时,需要设置,否则会链接超时导致写入失败。69.dtype:写入所述数据表时,可以设置列的名称(thekeysshouldbethecolumnnamesandthevaluesshouldbethesqlalchemytypesorstringsforthesqlite3legacymode),当设置列的名称时,类型需要和所述sqlalchemy的类型保持一致;当不设置时,所述to_sql函数生成表时会自动兼容最大的类型。70..to_sql()参数中除name、con必填外,可选参数index推荐使用false,同时dtype推荐不使用。71.本实施例提供一种基于python的表格数据导入方法,所述方法包括接到用户对excel表格的属性操作指令后,使用python调用openpyxl库,对excel表格中的属性数据进行处理,生成目标表格属性数据;接到用户对excel表格的内容操作指令后,使用所述python调用pandas库,对所述excel表格中的内容数据进行处理,生成目标表格内容数据;通过所述pandas库中read_excel函数读取所述目标表格属性数据和目标表格内容数据,并将其存储到所述dataframe对象;调用所述python中所述sqlite库的所述sqlite3命令,连接所述dataframe对象调用的接口和目标数据库;使用所述pandas库中的to_sql函数,将存储在所述dataframe对象中的所述目标表格属性数据和目标表格内容数据导入所述目标数据库,生成目标数据库表格。通过上述方式,本实施例使用所述python调用所述openpyxl库对所述excel表格中的属性数据进行处理,通过使用所述openpyxl库能够读写xltm、xltx、xlsm和xlsx等类型的表格,并且能处理数据量较大的excel表格。然后使用所述python调用所述pandas库直接对所述excel表格内容中各种数据进行运算操作,比如归并、再成形、选择,数据清洗和数据加工,提供高性能、易于使用的数据结构和数据分析工具,不需要再手动建立数据库表单实现数据导入,解决了目前excel表格导入数据方法的适配性不高,从而需要用户手动创建数据库表格的技术问题。所述read_excel函数将所述excel表格的文件读入一个所述pandas库的所述dataframe对象,不仅支持从本地文件系统读取xls、xlsx、xlsm、xlsb、odf、ods和odt文件格式,而且支持读取单个工作表或工作表列表的选项,读取速度快,减少用户操作时间。所述connect函数的sqlalchemy的engine类型可以让开发者用面向对象的方式来操作数据库,不再需要编写sql语句,代码的复用率很高;所述connect函数操作简单,对存储于其中的数据进行了针对性的优化,最终达到大幅提升运行时效率的目标。所述to_sql函数将所述dataframe对象的列数与数据库字段一一对齐;数据库字段可以缺少,但不可多出,否则会报错;所述to_sql函数体积小,占用资源少,简单易用,导入速度快。72.参照图3,图3为本技术基于python的表格数据导入方法第二实施例的流程示意图。73.基于上述图2所示实施例,本实施例中,所述步骤s10,具体包括:74.步骤s11、接到用户对excel表格的属性的操作指令后,使用所述openpyxl库读取所述excel表格中sheet表名,并根据所述用户对所述excel表格的属性的操作指令对所述sheet表名进行修改,或对所述sheet表的单元格属性、样式进行修改,以生成所述目标表格属性数据。75.本实施例中,对导入数据库前后的所述excel表格格式并未要求,通过所述openpyxl库对所述excel表格进行读取,能保持所述excel表格导入数据库前的文件格式和所述excel表格导入数据库后的文件格式一致。本实施例中通过所述openpyxl库可对所述excel表格属性对应的数据进行修改,例如,将sheet表名“name”修改为“table”。76.具体地,计算机通过所述python调用所述openpyxl库,使用所述openpyxl库能够直接加载用户需要导入数据库的所述excel表格。77.进一步地,所述步骤s50,具体包括:78.根据所述excel表格的表名在预设索引表中查找所述excel表格对应的表格属性数据以及表格内容数据,作为所述目标表格属性数据和目标表格内容数据;79.使用所述to_sql函数,将所述目标表格属性数据和所述目标表格内容数据导入所述目标数据库中,生成目标数据库表格。80.在一实施例中,计算机通过connect函数连接dataframe对象和目标数据库成功后,使用to_sql函数将dataframe对象中存储的目标表格数据写入目标数据库中。由此,通过to_sql函数将dataframe对象的列数与数据库字段一一对齐。81.可以理解的是,数据库字段可以缺少,但不可多出,否则会报错;所述to_sql函数体积小,占用资源少,简单易用,导入速度快。82.具体实施例中,可先获取所述excel表格的sheet表名,将所述sheet表名作为所述excel表格的key(关键字)进行索引,在所述excel表格中通过所述关键字key找到所述sheet表名对应的excel表格内容。例如,有一个excel表格等待导入数据库,用户需要对这个excel表格修改单元格的字体并删除一列数据,在接收到用户操作触发的指令后,将待操作的excel表格的sheet表名作为索引,物理标识出需要的sheet表名,将需要修改的这个excel表格提出来,修改单元格的字体并删除那一列数据,完成后将这个excel表格对应的修改后的属性数据存储起来作为目标表格属性数据。83.可以理解的是,索引具体是指一种单独的、物理的对所述excel表格中一列或多列的值进行排序的一种存储结构,它是excel表格表中一列或多列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,根据目录中的页码快速找到所需的内容。本实施例对excel表格的关键字进行索引,提高了查找效率。84.本实施例提供一种基于python的表格数据导入方法,所述方法包括接到用户对excel表格的属性操作指令后,使用python调用openpyxl库,对excel表格中的属性数据进行处理,生成目标表格属性数据;上述实施例,所述openpyxl库是可供读写excel表格xlsx、xlsm、xltx和xltm等文件的方法库,适用于连接和读入excel表格的文件,可以处理数据量较大的excel文件,而且还解决了excel表格文件在保存时的格式或编码乱码问题。85.参照图4,图4为本技术基于python的表格数据导入方法第三实施例的流程示意图。86.基于上述图2所示实施例,本实施例中,所述步骤s20,具体包括:87.步骤s21、接到用户对excel表格的内容操作指令后,使用所述pandas库读取所述excel表格的内容,并使用所述pandas库对所述excel表格的内容中的各种数据进行数据清洗和数据加工,以生成目标表格内容数据。88.在一实施例中,由openpyxl库转入一些数量的excel表格到pandas库,用户需要对其中一个或几个excel表格进行清洗重复数据和空值并删除,在接收到用户操作触发的指令后,使用pandas库先对这些待操作的excel表格的内容进行数据分析和数据挖掘,按照openpyxl库中的排序顺序标识出重复数据和空值具体在哪一个或几个excel表格中,通过使用对应的函数将重复数据和空值删除。删除完成后将这一个或几个excel表格对应的修改后的内容数据按照前面的先后顺序存储起来作为目标表格内容数据。89.使用所述pandas库能够清洗空值,也能移除指定列有空值的行,并指定某一个列来替换数据(通过isnull()函数判断所述excel表格的sheet表的各个列的单元格是否为空,再通过dropna()方法删除所述列的单元格中包含空字段的行)。90.使用所述pandas库具有清洗格式错误数据功能,如果所述单元格有数据错误,数据分析就会变得困难,甚至不可能,使用所述pandas库将错误的数据进行替换或移除,问题就能得到解决。91.使用所述pandas库能清洗重复数据,如果用户要处理重复数据,就使用duplicated()和drop_duplicates()方法;如果所述数据是重复的,所述duplicated()会返回正确true,否则返回错误false;如果需要删除重复数据,直接使用所述drop_duplicates()方法。92.本实施例提供一种基于python的表格数据导入方法,所述方法包括接到用户对excel表格的内容操作指令后,使用所述python调用所述pandas库,对所述excel表格中的内容数据进行处理,生成目标表格内容数据;上述实施例,pandas库用于数据挖掘和数据分析,同时也提供数据清洗功能,能处理excel表格中的各种数据情况,提供可使用的excel表格的文件数据,不需要用户再手动建立数据库表单实现数据导入。93.参照图5,图5为本技术基于python的表格数据导入方法第四实施例的流程示意图。94.基于上述图2所示实施例,本实施例中,所述步骤s30,具体包括:95.步骤s31、使用所述read_excel函数,按列读取所述目标表格属性数据和目标表格内容数据,并将所述目标表格属性数据和目标表格内容数据存储到所述dataframe对象,以产生目标表格数据。96.在一实施例中,使用read_excel函数将pandas库中的目标表格属性数据和目标表格内容数据,按照在openpyxl库的excel表格排序顺序,从每个excel表格中按列读取excel表格的所有数据,并将数据存储到dataframe对象中。97.本实施例提供一种基于python的表格数据导入方法,所述方法包括通过所述pandas库中read_excel函数读取所述目标表格属性数据和目标表格内容数据,并将其存储到所述dataframe对象;上述实施例,所述read_excel函数将所述excel表格文件读入一个所述pandas库的所述dataframe对象,支持从本地文件系统读取xls、xlsx、xlsm、xlsb、odf、ods和odt文件格式,支持读取单个工作表或工作表列表的选项,读取速度快,减少用户操作时间。98.进一步地,基于上述图2所示实施例,本实施例中,所述步骤s40,具体包括:99.判断所述目标数据库是否存在;100.在判定所述目标数据库存在时,使用所述sqlite库中sqlite3命令的connect函数,连接所述目标表格数据和所述目标数据库时,将所述目标数据库中的所述数据表覆盖。101.在判定所述目标数据库不存在时,使用所述connect函数连接所述目标表格数据和所述目标数据库,并通过所述dataframe对象自动创建一个目标数据库。102.在一实施例中,使用sqlite3命令中的connect函数,将dataframe对象接口对应的pool和dialect和目标数据库接口对应的pool和dialect连接。103.计算机使用sqlalchemyengine类型的所述connect函数连接所述dataframe对象与所述目标数据库;所述sqlalchemyengine是对象关系映射器引擎,在connect函数与目标数据库接口之间起到连接作用;所述engine是sqlite库中启动connect函数的模块,它维护了目标数据库连接池(pool)和数据库语言(dialect);所述目标数据库连接池和数据库语言是目标数据库接口的连接介质,目标数据库接口通过这两个介质匹配所述dataframe对象的接口;所述sqlalchemy是通过engine来驱动,sqlalchemy是pythonsql工具包和对象关系映射器(orm),它简化了应用程序开发人员在原生sql上的操作,使开发人员将主要精力都放在程序逻辑上,从而提高开发效率,它提供了一整套著名的企业级持久性模式,用于高效和高性能的数据库访问。104.由于每次发送sql查询请求的时候都需要先建立连接,因此,在程序启动的时候,事先初始化一批连接放在所述目标数据库连接池,每次用完后又将这批连接放回所述目标数据库连接池,以供其它请求使用,由此大大提高查询的效率。105.具体地,目标数据库存在时,将dataframe对象接口对应的pool和dialect和目标数据库接口对应的pool和dialect连接;目标数据库不存在时,dataframe对象会创建一个新的目标数据库,将dataframe对象接口对应的pool和dialect和目标数据库接口对应的pool和dialect连接。106.本实施例提供一种基于python的表格数据导入方法,所述方法包括调用所述python中所述sqlite库的所述sqlite3命令,连接所述dataframe对象调用的接口和目标数据库;上述实施例,所述connect函数的sqlalchemy的engine类型可以让开发者用面向对象的方式来操作数据库,不再需要编写sql语句,代码的复用率很高。另外,所述dataframe对象能存放数值、字符串等,并且能设置列名与行名,能够通过位置获取数据或通过列名和行名进行定位。connect函数操作简单,对存储于其中的数据进行了针对性的优化,最终达到大幅提升运行时效率的目标。107.此外,本实施例还提供一种基于python的表格数据导入装置。108.参照图6,图6为本发明基于python的表格数据导入装置第一实施例的功能模块示意图。109.本实施例中,所述基于python的表格数据导入装置包括:110.属性数据处理模块10,用于接到用户对excel表格的属性操作指令后,使用python调用openpyxl库,对所述excel表格中的属性数据进行处理,生成目标表格属性数据;111.内容数据处理模块20,用于接到用户对所述excel表格的内容操作指令后,使用所述python调用pandas库,对所述excel表格中的内容数据进行处理,生成目标表格内容数据;112.读取数据处理模块30,用于通过所述pandas库中read_excel函数读取所述目标表格属性数据和目标表格内容数据,并将其存储到所述pandas库中的dataframe对象;113.连接数据处理模块40,用于调用所述python中sqlite库的sqlite3命令,连接所述dataframe对象调用的接口和目标数据库;114.导入数据处理模块50,用于使用所述pandas库中的to_sql函数,将存储在所述dataframe对象中的所述目标表格属性数据和目标表格内容数据导入所述目标数据库,生成目标数据库表格。115.进一步地,所述属性数据处理模块10,包括:116.属性数据生成单元,用于接到用户对excel表格的属性的操作指令后,使用所述openpyxl库读取所述excel表格中sheet表名,并根据所述用户对所述excel表格的属性的操作指令对所述sheet表名进行修改,或对所述sheet表的单元格属性、样式进行修改,以生成所述目标表格属性数据。117.进一步地,所述内容数据处理模块20,包括:118.内容数据生成单元,用于接到用户对excel表格的内容操作指令后,使用所述pandas库读取所述excel表格的内容,并使用所述pandas库对所述excel表格的内容中的各种数据进行数据清洗和数据加工,以生成目标表格内容数据。119.进一步地,所述读取数据处理模块30,包括:120.数据读取单元,用于使用所述read_excel函数,按列读取所述目标表格属性数据和目标表格内容数据,并将所述目标表格属性数据和目标表格内容数据存储到所述dataframe对象,以产生目标表格数据。121.进一步地,所述连接数据模块40,包括:122.数据库判断单元,用于判断所述目标数据库是否存在;123.数据更新单元,用于在判定所述目标数据库存在时,使用所述sqlite库中sqlite3命令的connect函数,连接所述目标表格数据和所述目标数据库时,将所述目标数据库中的所述数据表覆盖。124.进一步地,所述连接数据处理模块40,还包括:125.数据库创建单元,用于在判定所述目标数据库不存在时,使用所述connect函数连接所述目标表格数据和所述目标数据库,并通过所述dataframe对象自动创建一个目标数据库。126.进一步地,所述导入数据处理模块50,包括:127.索引单元,用于根据所述excel表格的表名在预设索引表中查找所述excel表格对应的表格属性数据以及表格内容数据,作为所述目标表格属性数据和目标表格内容数据;128.数据库导入单元,用于使用所述to_sql函数,将所述目标表格属性数据和所述目标表格内容数据导入所述目标数据库中,生成目标数据库表格。129.其中,上述基于python的表格数据导入装置中各个模块与上述基于python的表格数据导入方法实施例中各步骤相对应,其功能和实现过程在此处不再一一赘述。130.此外,本发明实施例还提供一种计算机可读存储介质。131.本发明计算机可读存储介质上存储有基于python的表格数据导入程序,其中所述基于python的表格数据导入程序被处理器执行时,实现如上述的基于python的表格数据导入方法的步骤。132.其中,基于python的表格数据导入程序被执行时所实现的方法可参照本发明基于python的表格数据导入方法的各个实施例,此处不再赘述。133.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。134.上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。135.本技术可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络pc、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。本技术可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本技术,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。136.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。137.以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的
技术领域
:,均同理包括在本发明的专利保护范围内。当前第1页12当前第1页12
技术特征:
1.一种基于python的表格数据导入方法,其特征在于,所述基于python的表格数据导入方法包括以下步骤:接到用户对excel表格的属性操作指令后,使用python调用openpyxl库,对所述excel表格中的属性数据进行处理,生成目标表格属性数据;接到用户对所述excel表格的内容操作指令后,使用所述python调用pandas库,对所述excel表格中的内容数据进行处理,生成目标表格内容数据;通过所述pandas库中read_excel函数读取所述目标表格属性数据和目标表格内容数据,并将其存储到所述pandas库中的dataframe对象;调用所述python中sqlite库的sqlite3命令,连接所述dataframe对象调用的接口和目标数据库;使用所述pandas库中的to_sql函数,将存储在所述dataframe对象中的所述目标表格属性数据和目标表格内容数据导入所述目标数据库,生成目标数据库表格。2.如权利要求1所述的基于python的表格数据导入方法,其特征在于,所述接到用户对excel表格的属性操作指令后,使用python调用openpyxl库,对所述excel表格中的属性数据进行处理,生成目标表格属性数据步骤,包括:接到用户对excel表格的属性的操作指令后,使用所述openpyxl库读取所述excel表格中sheet表名,并根据所述用户对所述excel表格的属性的操作指令对所述sheet表名进行修改,或对所述sheet表的单元格属性、样式进行修改,以生成所述目标表格属性数据。3.如权利要求1所述的基于python的表格数据导入方法,其特征在于,所述接到用户对所述excel表格的内容操作指令后,使用所述python调用pandas库,对所述excel表格中的内容数据进行处理,生成目标表格内容数据步骤,包括:接到用户对excel表格的内容操作指令后,使用所述pandas库读取所述excel表格的内容,并使用所述pandas库对所述excel表格的内容中的各种数据进行数据清洗和数据加工,以生成目标表格内容数据。4.如权利要求1所述的基于python的表格数据导入方法,其特征在于,所述通过所述pandas库中read_excel函数读取所述目标表格属性数据和目标表格内容数据,并将其存储到所述pandas库中的dataframe对象步骤,包括:使用所述read_excel函数,按列读取所述目标表格属性数据和目标表格内容数据,并将所述目标表格属性数据和目标表格内容数据存储到所述dataframe对象,以产生目标表格数据。5.如权利要求1所述的基于python的表格数据导入方法,其特征在于,所述调用所述python中sqlite库的sqlite3命令,连接所述dataframe对象调用的接口和目标数据库步骤,包括:判断所述目标数据库是否存在;在判定所述目标数据库存在时,使用所述sqlite库中sqlite3命令的connect函数,连接所述目标表格数据和所述目标数据库时,将所述目标数据库中的所述数据表覆盖。6.如权利要求5所述的基于python的表格数据导入方法,其特征在于,所述判断所述目标数据库是否存在步骤之后,还包括:在判定所述目标数据库不存在时,使用所述connect函数连接所述目标表格数据和所
述目标数据库,并通过所述dataframe对象自动创建一个目标数据库。7.如权利要求1所述的基于python的表格数据导入方法,其特征在于,所述使用所述pandas库中的to_sql函数,将存储在所述dataframe对象中的所述目标表格属性数据和目标表格内容数据导入所述目标数据库,生成目标数据库表格步骤,包括:根据所述excel表格的表名在预设索引表中查找所述excel表格对应的表格属性数据以及表格内容数据,作为所述目标表格属性数据和目标表格内容数据;使用所述to_sql函数,将所述目标表格属性数据和所述目标表格内容数据导入所述目标数据库中,生成目标数据库表格。8.一种基于python的表格数据导入装置,其特征在于,所述基于python的表格数据导入包括:属性数据处理模块,用于接到用户对excel表格的属性操作指令后,使用python调用openpyxl库,对所述excel表格中的属性数据进行处理,生成目标表格属性数据;内容数据处理模块,用于接到用户对所述excel表格的内容操作指令后,使用所述python调用pandas库,对所述excel表格中的内容数据进行处理,生成目标表格内容数据;读取数据处理模块,用于通过所述pandas库中read_excel函数读取所述目标表格属性数据和目标表格内容数据,并将其存储到所述pandas库中的dataframe对象;连接数据处理模块,用于调用所述python中sqlite库的sqlite3命令,连接所述dataframe对象调用的接口和目标数据库;导入数据处理模块,用于使用所述pandas库中的to_sql函数,将存储在所述dataframe对象中的所述目标表格属性数据和目标表格内容数据导入所述目标数据库,生成目标数据库表格。9.一种基于python的表格数据导入设备,其特征在于,所述基于python的表格数据导入设备包括处理器、存储器、以及存储在所述存储器上并可被所述处理器执行的基于python的表格数据导入程序,其中所述基于python的表格数据导入程序被所述处理器执行时,实现如权利要求1至7中任一项所述的基于python的表格数据导入方法的步骤。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有基于python的表格数据导入程序,其中所述基于python的表格数据导入程序被处理器执行时,实现如权利要求1至7中任一项所述的基于python的表格数据导入方法的步骤。

技术总结
本申请提供一种基于Python的表格数据导入方法,所述方法使用Python调用Openpyxl库、对Excel表格中的属性数据进行处理,通过使用所述Openpyxl库能够读写xltm、xltx、xlsm和xlsx等类型的表格,并且能处理数据量较大的Excel表格,解决现有技术表格适配性不高的问题。使用Python调用Pandas库直接对所述Excel表格内容中各种数据进行运算操作,比如归并、再成形、选择,数据清洗和数据加工,提供高性能、易于使用的数据结构和数据分析工具,不需要再手动建立数据库表单实现数据导入。然后使用所述Pandas库中的to_sql函数,将存储在所述DataFrame对象中的所述目标表格属性数据和目标表格内容数据导入所述目标数据库,生成目标数据库表格,解决了现有表格数据导入效率低下的技术问题。的技术问题。的技术问题。


技术研发人员:李玥瑶
受保护的技术使用者:深圳开鸿数字产业发展有限公司
技术研发日:2023.03.28
技术公布日:2023/8/14
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐