readme.md
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`