一種適用于應(yīng)用程序數(shù)據(jù)庫(kù)表數(shù)據(jù)版本切換的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及應(yīng)用程序數(shù)據(jù)庫(kù)管理技術(shù)領(lǐng)域,特別是一種適用于應(yīng)用程序數(shù)據(jù)庫(kù)表數(shù)據(jù)版本切換的方法。
【背景技術(shù)】
[0002]在一些軟件系統(tǒng)開(kāi)發(fā)的項(xiàng)目測(cè)試階段中,系統(tǒng)中的數(shù)據(jù)庫(kù)通常已經(jīng)有很多表和數(shù)據(jù),而測(cè)試工程師每天都需要執(zhí)行對(duì)數(shù)據(jù)庫(kù)表數(shù)據(jù)版本更新操作。通常都是手工執(zhí)行一條或者多條執(zhí)行結(jié)構(gòu)化查詢語(yǔ)言SQL文件或語(yǔ)句,有時(shí)候發(fā)現(xiàn)當(dāng)前版本不可用時(shí)需要對(duì)數(shù)據(jù)庫(kù)表數(shù)據(jù)進(jìn)行降級(jí),這個(gè)時(shí)候同樣也需要執(zhí)行一條或者多條執(zhí)行結(jié)構(gòu)化查詢語(yǔ)言SQL文件或語(yǔ)句,而且升級(jí)和降級(jí)的語(yǔ)句或sql文件是不一樣的,帶來(lái)以下問(wèn)題:
[0003]—是手工執(zhí)行容易出錯(cuò),SQL文件或語(yǔ)句的執(zhí)行通常是有先后順序,要按照一定的順序執(zhí)行,而且很容易出現(xiàn)遺漏執(zhí)行文件。
[0004]二是若跨多個(gè)版本的降級(jí),開(kāi)發(fā)工程師編寫這些SQL文件或者語(yǔ)句所需要的工作量大,效率低;
[0005]三是SQL文件或者語(yǔ)句存放的目錄不統(tǒng)一,難以進(jìn)行統(tǒng)一的管理,版本管理員人員要通過(guò)查詢版本記錄才能定位具體某個(gè)版本數(shù)據(jù)庫(kù)表數(shù)據(jù)到底做了什么變更。
[0006]為了避免人為執(zhí)行的出錯(cuò),減輕測(cè)試工程師對(duì)數(shù)據(jù)庫(kù)表數(shù)據(jù)版本切換的工作復(fù)雜度,開(kāi)發(fā)工程師只需要專注當(dāng)前數(shù)據(jù)庫(kù)表數(shù)據(jù)版本的升級(jí)或者降級(jí)方法,需要有一種適用于應(yīng)用程序數(shù)據(jù)庫(kù)表數(shù)據(jù)版本切換的方法,用戶只需要簡(jiǎn)單執(zhí)行一條命令就能實(shí)現(xiàn)數(shù)據(jù)庫(kù)表數(shù)據(jù)版本升級(jí)或降級(jí)操作。
【發(fā)明內(nèi)容】
[0007]本發(fā)明解決的技術(shù)問(wèn)題在于提供一種適用于應(yīng)用程序數(shù)據(jù)庫(kù)表數(shù)據(jù)版本切換的方法,解決人為應(yīng)用程序數(shù)據(jù)庫(kù)表數(shù)據(jù)版本執(zhí)行容易出錯(cuò)、測(cè)試工程師執(zhí)行數(shù)據(jù)庫(kù)表數(shù)據(jù)版本切換工作繁瑣又復(fù)雜、開(kāi)發(fā)工程師開(kāi)發(fā)跨多個(gè)版本切換的SQL文件或語(yǔ)句工作量復(fù)雜、SQL文件或語(yǔ)句管理不夠統(tǒng)一等問(wèn)題。
[0008]本發(fā)明解決上述技術(shù)問(wèn)題的技術(shù)方案是:
[0009]包括如下步驟:
[0010]步驟1:調(diào)用數(shù)據(jù)庫(kù)表數(shù)據(jù)版本切換命令;
[0011 ]步驟2:加載數(shù)據(jù)庫(kù)腳本語(yǔ)言文件列表;
[0012]步驟3:分析文件列表并獲取最新的版本;
[0013]步驟4:獲取當(dāng)前數(shù)據(jù)庫(kù)表數(shù)據(jù)的版本;
[0014]步驟5:分析命令中的參數(shù)是否包含版本參數(shù),若包括則執(zhí)行步驟7,若不包括執(zhí)行步驟6;
[0015]步驟6:設(shè)置需要切換版本為最新版本;
[0016]步驟7:若需要切換版本小于當(dāng)前數(shù)據(jù)庫(kù)表數(shù)據(jù)版本則執(zhí)行步驟8;若需要切換版本大于當(dāng)前數(shù)據(jù)庫(kù)表數(shù)據(jù)版本則執(zhí)行步驟9;若需要切換版本等于當(dāng)前數(shù)據(jù)庫(kù)表數(shù)據(jù)版本則執(zhí)行步驟10;
[0017]步驟8:執(zhí)行數(shù)據(jù)庫(kù)表數(shù)據(jù)版本降級(jí);執(zhí)行步驟11;
[0018]步驟9:執(zhí)行數(shù)據(jù)庫(kù)表數(shù)據(jù)版本升級(jí);執(zhí)行步驟11;
[0019]步驟10:不需要做任何操作;
[0020]步驟11:完成。
[0021]所述調(diào)用數(shù)據(jù)庫(kù)表數(shù)據(jù)版本切換命令的命令只需要至多一個(gè)參數(shù):需要切換版本,也可以不提供任何參數(shù)。
[0022]所述的加載數(shù)據(jù)庫(kù)腳本語(yǔ)言文件列表是加載指定路徑下所有的文件列表,而這些文件格式是NUM_XXX_YYY_ZZZ.py;其中NUM是數(shù)據(jù)庫(kù)表數(shù)據(jù)庫(kù)的版本,NUM由數(shù)字組成,如001(表示第I個(gè)版本)、0133(表示第133個(gè)版本)、3244(表示第3244個(gè)版本)等;XXX、YYY、ZZZ是用戶自定義的英文或數(shù)字組成的字符串。每個(gè).py文件只包括升級(jí)和降級(jí)兩個(gè)方法,并且所有文件的升級(jí)方法和降級(jí)方法的命名是一樣的;
[0023]所述的.py格式的文件,是Python編程腳本語(yǔ)言的格式文件;
[0024]所述的Python,是一種面向?qū)ο?、解釋型?jì)算機(jī)程序設(shè)計(jì)語(yǔ)言,不需要編譯就能直接執(zhí)行的腳本語(yǔ)言。
[0025 ]所述的分析文件列表并獲取最新的版本,是從文件列表中的文件名稱解釋出每個(gè)文件對(duì)應(yīng)的版本號(hào),最大的版本號(hào)就是最新的版本;
[0026]所述的獲取當(dāng)前數(shù)據(jù)庫(kù)表數(shù)據(jù)的版本是從數(shù)據(jù)庫(kù)表數(shù)據(jù)中查詢出該數(shù)據(jù)庫(kù)表數(shù)據(jù)的版本。
[0027]所述的分析命令中的參數(shù)是否包含版本參數(shù),是解釋用戶調(diào)用的命令行中是否包括版本參數(shù),若是則解釋其值并設(shè)置需要切換版本為其值;若否則執(zhí)行下一步。
[0028]所述的設(shè)置需要切換版本為最新版本,設(shè)置需要切換版本為最新的版本,也就是文件列表中分析出最新的版本。
[0029]所述的步驟7時(shí)比較需要切換版本與當(dāng)前數(shù)據(jù)庫(kù)表數(shù)據(jù)版本大小,然后選擇升級(jí)、降級(jí)或不做任何操作。
[0030]所述的執(zhí)行數(shù)據(jù)庫(kù)表數(shù)據(jù)版本降級(jí),是按當(dāng)前數(shù)據(jù)庫(kù)表數(shù)據(jù)版本、需要切換版本順序,執(zhí)行從高版本到低版本的數(shù)據(jù)庫(kù)腳本語(yǔ)言文件的降級(jí)方法,完成版本切換流程;所述的降級(jí)方法,通常是通過(guò)刪除表、刪除表結(jié)構(gòu)字段、設(shè)置某字段為默認(rèn)值、變更字段的長(zhǎng)度或類型等,也有較少的情況是增加表、增加表結(jié)構(gòu)字段;
[0031]所述的執(zhí)行數(shù)據(jù)庫(kù)表數(shù)據(jù)版本升級(jí),是按當(dāng)前數(shù)據(jù)庫(kù)表數(shù)據(jù)版本、需要切換版本順序,執(zhí)行從低版本到高版本的數(shù)據(jù)庫(kù)腳本語(yǔ)言文件的升級(jí)方法,完成版本切換流程;所述的升級(jí)方法通常是增加表、增加表結(jié)構(gòu)字段、設(shè)置某字段為默認(rèn)值、變更字段的長(zhǎng)度或類型等,也有較少的情況是刪除表、刪除表結(jié)構(gòu)字段。
[0032]本發(fā)明通過(guò)適用于應(yīng)用程序數(shù)據(jù)庫(kù)表數(shù)據(jù)版本切換的方法,解決人為應(yīng)用程序數(shù)據(jù)庫(kù)表數(shù)據(jù)版本執(zhí)行容易出錯(cuò)、測(cè)試工程師執(zhí)行數(shù)據(jù)庫(kù)表數(shù)據(jù)版本切換工作繁瑣又復(fù)雜、開(kāi)發(fā)工程師開(kāi)發(fā)跨多個(gè)版本切換的SQL文件或語(yǔ)句工作量復(fù)雜、SQL文件或語(yǔ)句管理不夠統(tǒng)一等問(wèn)題,用戶執(zhí)行版本切換只需要執(zhí)行一條簡(jiǎn)單的命令。本發(fā)明是一種技術(shù)框架,區(qū)別于一般的數(shù)據(jù)庫(kù)表數(shù)據(jù)版本切換的方法;本發(fā)明主要通過(guò)SQLAlchemy工具及其語(yǔ)法來(lái)達(dá)到目的,區(qū)別于一般的數(shù)據(jù)庫(kù)表數(shù)據(jù)版本切換;本發(fā)明除了能夠?qū)崿F(xiàn)常用的數(shù)據(jù)庫(kù)表數(shù)據(jù)版本升級(jí),還能實(shí)現(xiàn)數(shù)據(jù)庫(kù)表數(shù)據(jù)版本降級(jí),區(qū)域一般的數(shù)據(jù)庫(kù)表數(shù)據(jù)版本切換的方法不能實(shí)現(xiàn)數(shù)據(jù)版本降級(jí);本發(fā)明只需要用戶執(zhí)行一個(gè)簡(jiǎn)單的命令,區(qū)別于其他數(shù)據(jù)庫(kù)表數(shù)據(jù)版本切換需要執(zhí)行多步操作。
【附圖說(shuō)明】
[0033]下面結(jié)合附圖對(duì)本發(fā)明進(jìn)一步說(shuō)明:
[0034]圖1為流程圖;
[0035]圖2為本發(fā)明數(shù)據(jù)庫(kù)腳本語(yǔ)言文件示例結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0036]本發(fā)明的實(shí)施方式有多種,這里以云平臺(tái)為例說(shuō)明其中一種實(shí)現(xiàn)方法,如圖1、2所示,具體實(shí)施過(guò)程如下:
[0037]1、調(diào)用數(shù)據(jù)庫(kù)表數(shù)據(jù)版本切換命令;
[0038]如執(zhí)行命令:dbsync027
[0039]其中027表示:需要切換版本為第27個(gè)版本
[0040]2、加載數(shù)據(jù)庫(kù)腳本語(yǔ)言文件列表;
[0041]"'
[0042]加載數(shù)據(jù)庫(kù)腳本語(yǔ)言文件列表.
[0043]Oparam path文件所在路徑
[0044]ire turn無(wú)返回對(duì)象
[0045]'''
[0046]def load(self,path):
[0047]self.config.load(path)
[0048]3、分析文件列表并獲取最新的版本;
[0049]"'
[0050]加載數(shù)據(jù)庫(kù)腳本語(yǔ)言文件列表.[0051 ]Oparam file_list 文件列表
[0052]ire turn無(wú)返回對(duì)象
[0053]
[0054]def analyse(self,file_list):
[0055]self.config.analyse(file_list)
[0056]4、獲取當(dāng)前數(shù)據(jù)庫(kù)表數(shù)據(jù)的版本;
[0057