CN105630898A - 一种适用于应用程序数据库表数据版本切换的方法 - Google Patents
一种适用于应用程序数据库表数据版本切换的方法 Download PDFInfo
- Publication number
- CN105630898A CN105630898A CN201510961362.1A CN201510961362A CN105630898A CN 105630898 A CN105630898 A CN 105630898A CN 201510961362 A CN201510961362 A CN 201510961362A CN 105630898 A CN105630898 A CN 105630898A
- Authority
- CN
- China
- Prior art keywords
- version
- database table
- switching
- data
- table data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/219—Managing data history or versioning
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及应用程序数据库管理技术领域,特别是一种适用于应用程序数据库表数据版本切换的方法。本发明首先调用数据库表数据版本切换命令;加载数据库脚本语言文件列表;分析文件列表并获取最新的版本;获取当前数据库表数据的版本;分析命令中的参数是否包含版本参数,若包括设置需要切换版本为最新版本;最后执行数据库表数据版本切换。本发明有效解决了应用程序数据库表数据版本自动切换问题,可以用于应用程序数据库表数据版本管理。
Description
技术领域
本发明涉及应用程序数据库管理技术领域,特别是一种适用于应用程序数据库表数据版本切换的方法。
背景技术
在一些软件***开发的项目测试阶段中,***中的数据库通常已经有很多表和数据,而测试工程师每天都需要执行对数据库表数据版本更新操作。通常都是手工执行一条或者多条执行结构化查询语言SQL文件或语句,有时候发现当前版本不可用时需要对数据库表数据进行降级,这个时候同样也需要执行一条或者多条执行结构化查询语言SQL文件或语句,而且升级和降级的语句或sql文件是不一样的,带来以下问题:
一是手工执行容易出错,SQL文件或语句的执行通常是有先后顺序,要按照一定的顺序执行,而且很容易出现遗漏执行文件。
二是若跨多个版本的降级,开发工程师编写这些SQL文件或者语句所需要的工作量大,效率低;
三是SQL文件或者语句存放的目录不统一,难以进行统一的管理,版本管理员人员要通过查询版本记录才能定位具体某个版本数据库表数据到底做了什么变更。
为了避免人为执行的出错,减轻测试工程师对数据库表数据版本切换的工作复杂度,开发工程师只需要专注当前数据库表数据版本的升级或者降级方法,需要有一种适用于应用程序数据库表数据版本切换的方法,用户只需要简单执行一条命令就能实现数据库表数据版本升级或降级操作。
发明内容
本发明解决的技术问题在于提供一种适用于应用程序数据库表数据版本切换的方法,解决人为应用程序数据库表数据版本执行容易出错、测试工程师执行数据库表数据版本切换工作繁琐又复杂、开发工程师开发跨多个版本切换的SQL文件或语句工作量复杂、SQL文件或语句管理不够统一等问题。
本发明解决上述技术问题的技术方案是:
包括如下步骤:
步骤1:调用数据库表数据版本切换命令;
步骤2:加载数据库脚本语言文件列表;
步骤3:分析文件列表并获取最新的版本;
步骤4:获取当前数据库表数据的版本;
步骤5:分析命令中的参数是否包含版本参数,若包括则执行步骤7,若不包括执行步骤6;
步骤6:设置需要切换版本为最新版本;
步骤7:若需要切换版本小于当前数据库表数据版本则执行步骤8;若需要切换版本大于当前数据库表数据版本则执行步骤9;若需要切换版本等于当前数据库表数据版本则执行步骤10;
步骤8:执行数据库表数据版本降级;执行步骤11;
步骤9:执行数据库表数据版本升级;执行步骤11;
步骤10:不需要做任何操作;
步骤11:完成。
所述调用数据库表数据版本切换命令的命令只需要至多一个参数:需要切换版本,也可以不提供任何参数。
所述的加载数据库脚本语言文件列表是加载指定路径下所有的文件列表,而这些文件格式是NUM_XXX_YYY_ZZZ.py;其中NUM是数据库表数据库的版本,NUM由数字组成,如001(表示第1个版本)、0133(表示第133个版本)、3244(表示第3244个版本)等;XXX、YYY、ZZZ是用户自定义的英文或数字组成的字符串。每个.py文件只包括升级和降级两个方法,并且所有文件的升级方法和降级方法的命名是一样的;
所述的.py格式的文件,是Python编程脚本语言的格式文件;
所述的Python,是一种面向对象、解释型计算机程序设计语言,不需要编译就能直接执行的脚本语言。
所述的分析文件列表并获取最新的版本,是从文件列表中的文件名称解释出每个文件对应的版本号,最大的版本号就是最新的版本;
所述的获取当前数据库表数据的版本是从数据库表数据中查询出该数据库表数据的版本。
所述的分析命令中的参数是否包含版本参数,是解释用户调用的命令行中是否包括版本参数,若是则解释其值并设置需要切换版本为其值;若否则执行下一步。
所述的设置需要切换版本为最新版本,设置需要切换版本为最新的版本,也就是文件列表中分析出最新的版本。
所述的步骤7时比较需要切换版本与当前数据库表数据版本大小,然后选择升级、降级或不做任何操作。
所述的执行数据库表数据版本降级,是按当前数据库表数据版本、需要切换版本顺序,执行从高版本到低版本的数据库脚本语言文件的降级方法,完成版本切换流程;所述的降级方法,通常是通过删除表、删除表结构字段、设置某字段为默认值、变更字段的长度或类型等,也有较少的情况是增加表、增加表结构字段;
所述的执行数据库表数据版本升级,是按当前数据库表数据版本、需要切换版本顺序,执行从低版本到高版本的数据库脚本语言文件的升级方法,完成版本切换流程;所述的升级方法通常是增加表、增加表结构字段、设置某字段为默认值、变更字段的长度或类型等,也有较少的情况是删除表、删除表结构字段。
本发明通过适用于应用程序数据库表数据版本切换的方法,解决人为应用程序数据库表数据版本执行容易出错、测试工程师执行数据库表数据版本切换工作繁琐又复杂、开发工程师开发跨多个版本切换的SQL文件或语句工作量复杂、SQL文件或语句管理不够统一等问题,用户执行版本切换只需要执行一条简单的命令。本发明是一种技术框架,区别于一般的数据库表数据版本切换的方法;本发明主要通过SQLAlchemy工具及其语法来达到目的,区别于一般的数据库表数据版本切换;本发明除了能够实现常用的数据库表数据版本升级,还能实现数据库表数据版本降级,区域一般的数据库表数据版本切换的方法不能实现数据版本降级;本发明只需要用户执行一个简单的命令,区别于其他数据库表数据版本切换需要执行多步操作。
附图说明
下面结合附图对本发明进一步说明:
图1为流程图;
图2为本发明数据库脚本语言文件示例结构图。
具体实施方式
本发明的实施方式有多种,这里以云平台为例说明其中一种实现方法,如图1、2所示,具体实施过程如下:
1、调用数据库表数据版本切换命令;
如执行命令:dbsync027
其中027表示:需要切换版本为第27个版本
2、加载数据库脚本语言文件列表;
′′′
加载数据库脚本语言文件列表.
parampath文件所在路径
return无返回对象
′′′
defload(self,path):
self.config.load(path)
3、分析文件列表并获取最新的版本;
′′′
加载数据库脚本语言文件列表.
paramfile_list文件列表
return无返回对象
′′′
defanalyse(self,file_list):
self.config.analyse(file_list)
4、获取当前数据库表数据的版本;
′′′
加载数据库脚本语言文件列表.
parampath文件所在路径
return无返回对象
′′′
defget_max_version(self):
returnself.config.get_max_version()
5、分析命令中的参数是否包含版本参数
′′′
分析命令中的参数是否包含版本参数.
parampath文件所在路径
return分析结果
′′′
defparse_args(self,args=None):
returnself.config.parse_args(args)
6、设置需要切换版本为最新版本;
′′′
设置需要切换版本为最新版本
parammax_version最新版本
return无返回对象
′′′
defset_version(self,max_version):
self.config.set_version(max_version)
7、若需要切换版本小于当前数据库表数据版本则执行降级流程;若需要切换版本大于当前数据库表数据版本则执行升级流程;若需要切换版本等于当前数据库表数据版本则不需要做任何操作;
′′′
调度流程.
paramversion需要切换版本
paramdb_version当前数据库表数据版本
return无返回对象
′′′
defdispath(self,version,db_version):
self.db.dispath(version,db_version)
8、执行数据库表数据版本降级,完成版本切换流程。
′′′
执行数据库表数据版本降级.
paramversion需要切换版本
paramdb_version当前数据库表数据版本
return无返回对象
′′′
defdowngrade(self,version,db_version):
self.db.downgrade(version,db_version)
9、执行数据库表数据版本升级,完成版本切换流程。
′′′
执行数据库表数据版本升级.
paramversion需要切换版本
paramdb_version当前数据库表数据版本
return无返回对象
′′′
defupgrade(self,version,db_version):
self.db.upgrade(version,db_version)
整个流程就完成。
Claims (8)
1.一种适用于应用程序数据库表数据版本切换的方法,其特征在于:包括如下步骤:
步骤1:调用数据库表数据版本切换命令;
步骤2:加载数据库脚本语言文件列表;
步骤3:分析文件列表并获取最新的版本;
步骤4:获取当前数据库表数据的版本;
步骤5:分析命令中的参数是否包含版本参数,若包括则执行步骤7,若不包括执行步骤6;
步骤6:设置需要切换版本为最新版本;
步骤7:若需要切换版本小于当前数据库表数据版本则执行步骤8;若需要切换版本大于当前数据库表数据版本则执行步骤9;若需要切换版本等于当前数据库表数据版本则执行步骤10;
步骤8:执行数据库表数据版本降级;执行步骤11;
步骤9:执行数据库表数据版本升级;执行步骤11;
步骤10:不需要做任何操作;
步骤11:完成。
2.根据权利要求1所述的方法,其特征在于:所述调用数据库表数据版本切换命令的命令只需要至多一个参数:需要切换版本,也可以不提供任何参数。
3.根据权利要求1所述的方法,其特征在于:所述的加载数据库脚本语言文件列表是加载指定路径下所有的文件列表,而这些文件格式是NUM_XXX_YYY_ZZZ.py;其中NUM是数据库表数据库的版本,NUM由数字组成,如001(表示第1个版本)、0133(表示第133个版本)、3244(表示第3244个版本)等;XXX、YYY、ZZZ是用户自定义的英文或数字组成的字符串。每个.py文件只包括升级和降级两个方法,并且所有文件的升级方法和降级方法的命名是一样的;
所述的.py格式的文件,是Python编程脚本语言的格式文件;
所述的Python,是一种面向对象、解释型计算机程序设计语言,不需要编译就能直接执行的脚本语言。
4.根据权利要求1所述的方法,其特征在于:所述的分析文件列表并获取最新的版本,是从文件列表中的文件名称解释出每个文件对应的版本号,最大的版本号就是最新的版本;
所述的获取当前数据库表数据的版本是从数据库表数据中查询出该数据库表数据的版本。
5.根据权利要求1所述的方法,其特征在于:所述的分析命令中的参数是否包含版本参数,是解释用户调用的命令行中是否包括版本参数,若是则解释其值并设置需要切换版本为其值;若否则执行下一步。
6.根据权利要求1所述的方法,其特征在于:所述的设置需要切换版本为最新版本,设置需要切换版本为最新的版本,也就是文件列表中分析出最新的版本。
7.根据权利要求1所述的方法,其特征在于:所述的步骤7时比较需要切换版本与当前数据库表数据版本大小,然后选择升级、降级或不做任何操作。
8.根据权利要求1至7任一项所述的方法,其特征在于:所述的执行数据库表数据版本降级,是按当前数据库表数据版本、需要切换版本顺序,执行从高版本到低版本的数据库脚本语言文件的降级方法,完成版本切换流程;所述的降级方法,通常是通过删除表、删除表结构字段、设置某字段为默认值、变更字段的长度或类型等,也有较少的情况是增加表、增加表结构字段;
所述的执行数据库表数据版本升级,是按当前数据库表数据版本、需要切换版本顺序,执行从低版本到高版本的数据库脚本语言文件的升级方法,完成版本切换流程;所述的升级方法通常是增加表、增加表结构字段、设置某字段为默认值、变更字段的长度或类型等,也有较少的情况是删除表、删除表结构字段。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510961362.1A CN105630898A (zh) | 2015-12-18 | 2015-12-18 | 一种适用于应用程序数据库表数据版本切换的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510961362.1A CN105630898A (zh) | 2015-12-18 | 2015-12-18 | 一种适用于应用程序数据库表数据版本切换的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105630898A true CN105630898A (zh) | 2016-06-01 |
Family
ID=56045831
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510961362.1A Withdrawn CN105630898A (zh) | 2015-12-18 | 2015-12-18 | 一种适用于应用程序数据库表数据版本切换的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105630898A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106649631A (zh) * | 2016-12-07 | 2017-05-10 | 国云科技股份有限公司 | 一种灵活配置额外字段的***及其方法 |
CN107220315A (zh) * | 2017-05-16 | 2017-09-29 | 北京酷我科技有限公司 | 一种app版本更新时数据库降级的用户数据保护方法 |
CN107861737A (zh) * | 2017-11-06 | 2018-03-30 | 国云科技股份有限公司 | 一种大型***的数据库版本迁移方法 |
CN109189783A (zh) * | 2018-08-03 | 2019-01-11 | 北京涛思数据科技有限公司 | 一种时序数据库表结构改变处理方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1859180A (zh) * | 2005-12-13 | 2006-11-08 | 华为技术有限公司 | 一种实现网络终端设备配置自动更新的方法及*** |
CN1991757A (zh) * | 2005-12-28 | 2007-07-04 | 腾讯科技(深圳)有限公司 | 实现软件升级的方法 |
CN101499069A (zh) * | 2008-02-02 | 2009-08-05 | 中兴通讯股份有限公司 | 内存数据库文件的更新方法及更新装置 |
CN101925094A (zh) * | 2009-06-17 | 2010-12-22 | 中兴通讯股份有限公司 | 网元管理***的更新***及方法 |
CN103186468A (zh) * | 2013-04-10 | 2013-07-03 | 华为技术有限公司 | 一种验证软件升级准确性的方法和装置 |
CN103246604A (zh) * | 2013-03-29 | 2013-08-14 | 北京京东尚科信息技术有限公司 | 软件测试的***和方法以及控制装置与执行装置 |
US20140095432A1 (en) * | 2012-09-28 | 2014-04-03 | Apple Inc. | Schema versioning for cloud hosted databases |
-
2015
- 2015-12-18 CN CN201510961362.1A patent/CN105630898A/zh not_active Withdrawn
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1859180A (zh) * | 2005-12-13 | 2006-11-08 | 华为技术有限公司 | 一种实现网络终端设备配置自动更新的方法及*** |
CN1991757A (zh) * | 2005-12-28 | 2007-07-04 | 腾讯科技(深圳)有限公司 | 实现软件升级的方法 |
CN101499069A (zh) * | 2008-02-02 | 2009-08-05 | 中兴通讯股份有限公司 | 内存数据库文件的更新方法及更新装置 |
CN101925094A (zh) * | 2009-06-17 | 2010-12-22 | 中兴通讯股份有限公司 | 网元管理***的更新***及方法 |
US20140095432A1 (en) * | 2012-09-28 | 2014-04-03 | Apple Inc. | Schema versioning for cloud hosted databases |
CN103246604A (zh) * | 2013-03-29 | 2013-08-14 | 北京京东尚科信息技术有限公司 | 软件测试的***和方法以及控制装置与执行装置 |
CN103186468A (zh) * | 2013-04-10 | 2013-07-03 | 华为技术有限公司 | 一种验证软件升级准确性的方法和装置 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106649631A (zh) * | 2016-12-07 | 2017-05-10 | 国云科技股份有限公司 | 一种灵活配置额外字段的***及其方法 |
CN107220315A (zh) * | 2017-05-16 | 2017-09-29 | 北京酷我科技有限公司 | 一种app版本更新时数据库降级的用户数据保护方法 |
CN107220315B (zh) * | 2017-05-16 | 2020-08-25 | 北京酷我科技有限公司 | 一种app版本更新时数据库降级的用户数据保护方法 |
CN107861737A (zh) * | 2017-11-06 | 2018-03-30 | 国云科技股份有限公司 | 一种大型***的数据库版本迁移方法 |
CN109189783A (zh) * | 2018-08-03 | 2019-01-11 | 北京涛思数据科技有限公司 | 一种时序数据库表结构改变处理方法 |
CN109189783B (zh) * | 2018-08-03 | 2023-10-03 | 北京涛思数据科技有限公司 | 一种时序数据库表结构改变处理方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10042903B2 (en) | Automating extract, transform, and load job testing | |
CN101212362B (zh) | 一种融合多类型测试工具的自动化测试装置及方法 | |
US8788542B2 (en) | Customization syntax for multi-layer XML customization | |
US8966465B2 (en) | Customization creation and update for multi-layer XML customization | |
US8560938B2 (en) | Multi-layer XML customization | |
US20090205013A1 (en) | Customization restrictions for multi-layer XML customization | |
US20090204629A1 (en) | Caching and memory optimizations for multi-layer xml customization | |
CN105630898A (zh) | 一种适用于应用程序数据库表数据版本切换的方法 | |
US20220179642A1 (en) | Software code change method and apparatus | |
CN102156643A (zh) | 软件集成方法及*** | |
CN102118281B (zh) | 自动化测试方法、装置及网络设备 | |
CN106371881B (zh) | 一种用于服务器内程序版本更新的方法和*** | |
CN108563432A (zh) | 一种通过路由配置的Android应用程序组件化快速开发方法 | |
CN105049514B (zh) | 一种文件下载方法和装置 | |
CN105159718A (zh) | 固件升级方法及装置 | |
CN109977099A (zh) | 数据库部署方法、用户设备、存储介质及装置 | |
CN103488674A (zh) | 计算***和计算***的执行控制方法 | |
CN115794106A (zh) | 一种轨道交通二进制协议数据配置式解析的方法及*** | |
CN114721686A (zh) | 配置数据更新方法、装置、电子设备和存储介质 | |
CN104182344B (zh) | 一种覆盖安装测试方法及装置 | |
CN110968569B (zh) | 数据库的管理方法、数据库的管理装置及存储介质 | |
CN109117173B (zh) | 一种基于项目版本开发的配制文件管理方法 | |
CN103064722A (zh) | 一种程序统一编译方法及*** | |
CN113741966A (zh) | 一种Kickstart文件转换的方法、***、设备和存储介质 | |
CN102611580B (zh) | 一种基于规格驱动的多版本网络管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20160601 |