在程序開發中經常遇到如下場景,Windows下開發,編譯后的代碼先發測試環境(Linux),測試環境通過后發集成測試環境(Linux),集成測試環境測試通過后發用戶驗收測試環境(Linux)。每次發版時需要確認是否發版成功,因為有可能漏發文件。
最笨的方法是將遠程目錄下載過來與本地發版目錄中的文件一一比對。實際上稍微留心的話比對工具compare支持遠程比對(若不支持請升級到最新版本)。
上述方法看似是最優做法了,那么還有沒有效率更高的方法么?有,下面給出實現思路。
首先比對可以通過python腳本來進行,且對于不同的文件以高亮顏色標出,這樣就可以一眼看出是否有不一樣的。如何通過腳本來比較?步驟如下
1、 遍歷本地發版目錄,每取得一個文件獲取本地文件的md5值,并獲取遠程環境的md5值,若一樣則說明發版成功,否則以紅色標出
2、 若需要執行數據庫檢查則需要下載instantclient-basic-windows.x64-12.1.0.2.0.zip、instantclient-sqlplus-windows.x64-12.1.0.2.0.zip來連接數據庫并執行sql腳本
如何獲取本地文件md5
如何獲取遠程文件md5
如何執行本地sql進行數據庫數據檢查
sqlplus -S 用戶名/密碼@IP:port/實例名 @sql文件全路徑
至此通過腳本中標紅的部分我們可以一眼看出是否發版成功,然而還沒有結束,因為腳本中一般會涉及發版的具體目錄,每次檢查不同的發版可能需要更改腳本中發部程序路徑,有沒有辦法避免?有,使用windows右鍵,通過在windows右鍵中添加菜單,并將在哪個目錄上執行的通過參數傳給python腳本就可以實現:在文件夾上右擊,選擇檢查命令,右鍵菜單將目錄名傳遞給python腳本,python腳本執行檢查。此時我們要做的工作變成了找到程序目錄,右擊,選擇檢查命令,查看檢查結果就可以了,極大的提高了效率。至于如何添加右鍵可參考。這里給出一個示例
參考:https://www.toutiao.com/a6975700841424552484/?log_from=7c1284cd99909_1631685061572
我用的是Anaconda,已安裝好
wins+R輸入cmd
命令窗口輸入:pip install cx_Oracle
下載地址:https://www.oracle.com/database/technologies/instant-client/downloads.html。下載instantclient-basic-windows.x64-19.6.0.0.0dbru.zip。解壓后復制oci.dll、oraocci11.dll、oraociei11.dll這3個文件到Anaconda安裝目錄下的Lib\site-packages文件夾中。(我這里的客戶端版本是11的,如果是其它版本的客戶端,找到對應的dll拷貝過去就可以了)
在python窗口執行如下語句
import pandas as pd
import cx_Oracle
#連接數據庫,下面括號里內容根據自己實際情況填寫
conn=cx_Oracle.connect('用戶名/密碼@IP:端口號/SERVICE_NAME')
# 使用cursor()方法獲取操作游標
cursor=conn.cursor()
#使用execute方法執行SQL語句
result=cursor.execute('Select member_id from member')
#使用fetchone()方法獲取一條數據
#data=cursor.fetchone()
#獲取所有數據
all_data=cursor.fetchall()
#獲取部分數據,10條
#many_data=cursor.fetchmany(10)
print (all_data)
#把數據保存到本地文件
df=pd.DataFrame(all_data)
df.to_csv('test.csv')
db.close()