Package: prestool
一、安装（python版本建议3.7以上）pipinstall--upgradeprestool二、常用工具fromprestool.ToolimportTooltool=Tool()随机数据tool.random_name()# 随机姓名tool.random_phone()# 随机手机号tool.random_ssn()# 随机身份证tool.random_string(16)# 随机位数的字符串tool.random_number(8)# 随机位数的数字tool.random_ua()# 随机UAtool.random_ua('chrome')# 随机UA-Chrometool.random_ua('firefox')# 随机UA-Firefoxtool.random_ua('ie')# 随机UA-IEtool.random_ua('opera')# 随机UA-operatool.random_ua('safari')# 随机UA-safari编码解码tool.url_encode('编码前的url地址')# 编码tool.url_decode('解码前的url地址')# 解码tool.base_64_encode('编码前的字符串')# base64编码加密相关tool.to_md5('原始字符串')tool.to_hmac_256('原始字符串','加密key')tool.to_sha_256('原始字符串')发送消息钉钉tool.ding_talk_token='钉钉机器人token'tool.ding_talk_sign_key='钉钉机器人签名key'tool.send_ding_talk_msg('消息内容')企业微信tool.qy_wechat_token='企业微信机器人token'tool.send_qy_wechat_msg('消息内容')飞书tool.feishu_token='飞书机器人token'tool.feishu_sign_key='飞书机器人秘钥'tool.send_feishu_msg('消息内容')邮件tool.mail_from_user_host='发件地址host'tool.mail_from_user='发件人邮箱号'tool.mail_from_user_pwd='发件人密码'tool.send_mail_msg(to_user='收件人邮箱地址（列表）',title='邮件标题',content='邮件内容')时间相关tool.time_stamp()# 秒级时间戳10位tool.time_stamp('ms')# 毫秒级时间戳13位tool.get_now_time()# 获取当前时间 20201206000000tool.get_now_time('-')# 获取当前时间 2020-12-06 00:00:00tool.date_to_time_stamp('2012-01-01 00:00:00')# 时间字符串转为时间戳tool.time_stamp_to_date(1732312234)# 时间戳转为时间字符串格式转换tool.json_dumps({"test":"python字典"})# 字典转jsontool.json_loads('{"test": "python字典"}')# json转字典tool.xml_to_dict('<xml><data>字符串</data></xml>')# xml转成python字典tool.dict_to_xml({"test":"python字典"})# python字典 转成xmlhttp请求tool.http_client(url='',data={},method='GET')# get请求tool.http_client(url='',data={},method='POST')# post请求tool.get_cookies(url='接口地址',data={},method='GET')tool.get_cookies(url='接口地址',data={},method='POST')tool.trans_data_to_url(url='接口地址',data={})# 把参数拼接到url上dubbo接口tool.dubbo_args('参数1','参数2','参数3')# dubbo接口参数tool.invoke_dubbo('地址','端口','服务API名','接口方法名','dubbo接口参数')# 请求dubbo接口其他tool.logger('日志信息')tool.get_ip_by_url('url地址')# 获取ip三、数据库语句（MySQL/sqlite）一、生成数据库sql语句fromprestool.PresMySqlimportSqlStrsql=SqlStr()查询语句target不传时，为全部字段，即*，where={'key':'value'}sql.select_sql_str(table='table1',where={'id':1,'name':'张三'})select*fromtable1whereid=1andname='张三';target=[i1,i2,i3]时，为相应字段sql.select_sql_str(table='table1',target=['a','b','c'],where={'id':1,'name':'张三'})selecta,b,cfromtable1where1=1andid=1andname='张三';limit=10    limit='10,1000' 为筛选限制字段sql.select_sql_str(table='table1',target=['a','b','c'],order={'age':'desc','score':'desc'},limit=20)selecta,b,cfromtable1where1=1orderbyagedesc,scoredesclimit20;where条件中有的字段为null或者not null时sql.select_sql_str(table='table1',target=['a','b','c'],where={'id':1},is_not_null={'age':True,'name':None})selecta,b,cfromtable1where1=1andid=1andageisnotnullandnameisnull;支持排序语句sql.select_sql_str(table='table1',target=['a','b','c'],order={'age':'desc','score':'desc'})selecta,b,cfromtable1orderbyagedesc,scoredesc;支持查询 in语句sql.select_sql_str(table='table1',target=['a','b','c'],select_in={'orders':[123121312,123123445,213123]})selecta,b,cfromtable1where1=1andordersin(123121312,123123445,213123);支持like语句sql.select_sql_str(table='table1',target=['a','b','c'],like={'name':'%光','address':"中国%"})selecta,b,cfromtable1where1=1andnamelike'%光'andaddresslike'中国%';支持between语句sql.select_sql_str(table='table1',target=['a','b','c'],between={'age':(10,20),'year':(2021,2022)})selecta,b,cfromtable1where1=1andagebetween10and20andyearbetween2021and2022;支持大于、小于语句sql.select_sql_str(table='table1',target=['a','b','c'],compare={'age':{'>':10,'<':20},'year':{'>=':'2021'}})selecta,b,cfromtable1where1=1andage>10andage<20andyear>=2021;更新语句target为要更新的数据，为字典结构(支持大于、小于语句、between语句、like语句、in语句)sql.update_sql_str(table='table1',target={'name':'李四','age':15},where={'id':1,'name':'张三'})updatetable1setname='李四',age=15whereid=1andname='张三';删除数据支持大于、小于语句、between语句、like语句、in语句sql.delete_sql_str(table='table1',where={'id':1,'name':'张三'})deletefromtable1whereid=1andname='张三';插入数据sql.insert_sql_str(table='table1',target={'id':1,'name':'张三'})insertintotable1(id,name)values(1,'张三');二、执行数据库语句mysql模式fromprestool.PresMySqlimportPresMySqlpres=PresMySql()sqlite模式fromprestool.PresSqliteimportPresSqlitepres=PresSqlite()初始化数据库信息mysql模式pres.mysql_host=''pres.mysql_port=3306pres.mysql_user=''pres.mysql_pwd=''pres.mysql_db_name=''pres.mysql_charset='utf8mb4'sqlite模式pres.sqlite_path=''执行相应语句即可，执行的方法参数等同于第三节所述的sql语句，如pres.to_query(table='table1',target=['a','b','c'],between={'age':(10,20),'year':(2021,2022)})pres.to_insert(table='table1',target={'id':1,'name':'张三'})pres.to_delete(table='table1',where={'id':1,'name':'张三'})pres.to_update(table='table1',target={'name':'李四','age':15},where={'id':1,'name':'张三'})四、数据库语句（MongoDB)一、执行数据库语句fromprestool.PresMongoimportPresMongopres=PresMongo()初始化数据库信息pres.mongo_host=''pres.mongo_port=27017pres.mongo_user=''pres.mongo_pwd=''pres.mongo_db_name=''pres.mongo_auth_source=''查询语句(默认查询一条，查询多条可使用is_all=True)普通查询pres.to_query(table='abc',where={'id':"123123"})pres.to_query(table='abc',where={'$and':[{'age':14},{'sex':1}]})res=pres.to_query(table='abc',where={'id':"123123"},is_all=True)foriinres:print(i)排序pres.to_query(table='abc',where={'id':"123123"},asc='age')# 按年龄正序pres.to_query(table='abc',where={'id':"123123"},desc='age')# 按年龄倒序数量限制pres.to_query(table='abc',where={'id':"123123"},limit=10)更新语句pres.to_update(table='abc',target={'age':14},where={'name':'张三'})插入语句pres.to_insert(table='abc',target={'age':14})# 插入一条pres.to_insert(table='abc',target=[{'age':14},{"name":'张三'}])# 插入一个列表五、操作缓存（Redis)一、连接Redisfromprestool.PresRedisimportPresRedispres=PresRedis()二、初始化redispres.redis_host=''pres.redis_port=6379三、操作缓存withpres.conn_redis()asr:# do something上传到pypi相关python setup.py bdist_wheel --universal
twine upload dist/*