最近测试的过程中,测试公众号注册登录功能,一个微信号要反复回归测试,就需要清理数据库里用户的微信openid,以及缓存中用户登录的uid记录和token记录,有时候还需要清除H5token对应的信息,每测试一次就需要手动根据手机号去user表查出记录,然后清除微信openid,然后根据查询出的uid,去缓存中查询出token,然后记录下values,然后删除key,然后再根据values反查后再删除查出的uid,测试一两次还可以,但是反复测试,清除数据很是繁琐,所以写了个python脚本,并打包成exe可执行文件,在此记录一下。
1、完成python脚本:wxopen_clean.py
1 #python伪代码 2 3 import pymysql 4 phone = input("请输入要清除的手机号:").strip() 5 #连接数据库清数据 6 db = pymysql.connect(host,user,password,database) 7 cursor = db.cursor() 8 s = "select uid from user where phone = '%s';" % phone 9 cursor.execute(s) 10 data = cursor.fetchone() 11 uid = data[0] 12 ss = "update user set wxopenid = Null where uid = '%s';" % uid 13 cursor.execute(ss) 14 db.commit() 15 db.close() 16 17 #连接缓存 18 redis_pool = redis.ConnectionPool(host=host,port,password=passwd,decode_responses=True,db=0) 19 conn = redis.Redis(connection_pool=redis_pool) 20 # 获取token,其中a为缓存的key 21 a = 'user:login:app:uid:' + uid 22 r_token = conn.get(a) 23 if r_token: 24 conn.delete(a) 25 b = 'user:login:app:token:' + r_token 26 conn.delete(b) 27 28 c = 'user:login:h5mark:uid:' + uid 29 h_token = conn.get(c) 30 if h_token: 31 conn.delete(c) 32 d = 'user:login:app:token:' + h_token 33 conn.delete(d)
2、将上述文件放在一个单独的文件夹内,然后将py文件中需要引用的第三方包:pymysql和redis在python的Lib目录下找到,然后复制到跟py文件同一个目录下:
其中,找了个ico的图标,这个需要从网上下载个图,然后使用icon在线转换器,转换成ico格式的文件,大小选择16*16,才可以用;
3、windows下cmd进入命令行,需要提前安装打包的包:pip install pyinstaller,安装成后,进入到上述py文件的目录位置,执行语句:
1 pyinstaller -F -i icon.ico wxopen_user.py
上述语句执行后,就会在同目录下生成多个文件:
4、可执行的exe文件在dist目录下,这下可以直接将该文件发送到桌面快捷方式,然后直接执行即可,如果有输入,则可以在弹出的黑窗户中进行输入;
期间遇到个问题,我原来的sql语句是:
1 "update user set wxopenid=Null where uid = %s;" % uid
然后执行的时候,如果uid里包含字母,就会报错,如果全部是数字,运行是正常的,然后修改了一下,可以执行了,将uid取到后加了单引号:
"update user set wxopenid=Null where uid = '%s' ;" % uid