1## 版本 2python版本:3.8.10 3pip版本:22.1.2 4python依赖: 5 6``` 7pip install pandas 8pip install openpyxl 9pip install subprocess 10``` 11## 使用 12`python compare.py` 13 14## 目录 15``` 16APL_compare 17├── apl_config.py # 整个目录中的常量定义 18├── read_device.py # 从设备中下载db并解析表和字段的函数 19├── read_excel.py # 从excel中解析表和字段的函数 20├── compare.py # 脚本运行入口 21└── common.py # 公共需要用到的函数 22``` 23## apl_config.py 24常量定义 25`PATH`:当前目录的地址 26### read_excel.py 27`SHEET_NAME`:excel中的表名 28`COLS`:excel中的列名,下标从0开始 29`SVN`:SVN的安装目录下的bin目录 30`SVN_URL`:excel文件在SVN上对应的url 31`USER`:svn的用户名 32`PWD`:svn的密码 33`FILE_PATH`:本地下载文件的路径 34`SQL_SRC`:设备上的数据库路径 35`SQL_DES`:本地下载文件路径 36`DOWNLOAD_DB`:从设备下载的hdc命令 37`QUERY_HAP_APL`:查询HAP APL的sql语句(查询多列可以依次添加字段,添加字段的顺序为比较时的字段优先级) 38`QUERY_NATIVE_APL`:查Native APL的sql语句 39`APL_LOG_FILE`:执行脚本的日志路径 40`APL_RECORD_PATH`:APL对比记录的日志路径 41`IS_OVERWRITE`:是否覆盖之前的APL日志,w表示覆盖,a表示追加 42 43## read_device.py 44用于从设备上导出数据库,并解析表和字段 45### 数据库导出 46函数:`download_from_device(cmd,sql_src,sql_des)` 47hdc命令:`cmd` 48设备中数据库路径:`sql_src` 49本地数据库路径:`sql_des` 50执行命令:`hdc file recv sql_src sql_des` 51### 连接数据库 52相关函数:`sql_connect(db)` 53传入参数:`db`--db文件存放路径 54返回结果:`conn`--数据库的连接 55### sql语句查询 56相关函数:`query_records(db,sql)` 57传入参数:`db`--需要连接的数据库;`sql`:sql查询语句 58返回结果:`results`--查询结果 59### 查hap_token_info_table中的bundle_name和apl 60sql语句:`QUERY_HAP_APL="select bundle_name,apl from hap_token_info_table"` 61相关函数:`query_hap_apl(db,sql)` 62传入参数:`db`--需要连接的数据库;`sql`:sql查询语句 63返回结果:`res_map`--查询结果转化为的字典(map,key是bundle_name,value是apl) 64### 查询native_token_info_table中的process_name和apl 65sql语句:`QUERY_NATIVE_APL="select process_name,apl from native_token_info_table"` 66相关函数:`query_native_apl(db,sql)` 67传入参数:`db`--需要连接的数据库;`sql`--sql查询语句 68返回结果:`res_map`--查询结果转化为的字典(map,key是process_name,value是apl) 69 70## read_excel.py 71### 从svn上下载excel 72相关函数:`syn_checkout(settings)` 73传入参数:`settings`--包含svn上文件路径,本地路径,用户名,密码 74返回结果:`settings['dir']`--本地下载路径 75### url编码 76相关函数:`url_encode(url)` 77传入参数:`url` 78返回结果:`encode_url` 79 80### 解析excel 81相关函数:`read_excel(file,sheet,cols)` 82传入参数:`file`--excel文件,`sheet`--表名,`cols`--列名 83返回结果:`apl_map`----查询结果转化为的字典(map,key是bundle/process_name,value是apl) 84 85## common.py 86### 脚本执行过程中的错误日志 87相关函数:`log(msg)` 88相关参数:`msg`--错误信息 89### 设置脚本执行过程中的日志信息 90相关函数:`apl_set_log_content(msg)` 91相关参数:`msg`--日志信息,`is_error`--用于判断是执行失败、成功 92返回结果:带时间戳的日志信息 93 94### 设置apl记录的格式 95相关函数:set_error_record(name,error) 96相关参数:`name`--bundle name或者native name,`error`--错误原因 97返回结果:带时间戳的记录 98 99### 将查询结果转化成map的结构 100相关函数:`set_map(results)` 101传入参数:`results`--查询结果的列表 102返回结果:`res_map` 103### 转换查询结果map的value格式 104相关函数:`set_value(result)` 105传入参数:`result`--查询到的每一行结果 106返回结果:`value`--包含查询到的字段的列表 107### 时间戳 108相关函数:`timestamp()` 109返回结果:时间戳 110 111### 错误类型 112`ErrorType`:枚举类 113 114### 自定义异常 115`AplCompareException` 116 117### 自定义线程 118`AplCompareThread` 119 120### 日志格式设置 121`logging.basicConfig`