自己封装的 Python 常用工具库(prestool)
一、安装
需Python 版本建议 3.7 以上
pip install --upgrade prestool
二、常用工具
from prestool.Tool import Tool
tool = Tool()
1、随机数据
tool.random_name() # 随机姓名
tool.random_phone() # 随机手机号
tool.random_ssn() # 随机身份证
tool.random_string(16) # 随机位数的字符串
tool.random_number(8) # 随机位数的数字
tool.random_ua() # 随机UA
tool.random_ua('chrome') # 随机UA-Chrome
tool.random_ua('firefox') # 随机UA-Firefox
tool.random_ua('ie') # 随机UA-IE
tool.random_ua('opera') # 随机UA-opera
tool.random_ua('safari') # 随机UA-safari
2、编码解码
tool.url_encode('编码前的url地址') # 编码
tool.url_decode('解码前的url地址') # 解码
tool.base_64_encode('编码前的字符串') # base64编码
3、加密相关
tool.to_md5('原始字符串')
tool.to_hmac_256('原始字符串', '加密key')
tool.to_sha_256('原始字符串')
4、发送消息
# 钉钉
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.mail_from_user_host = '发件地址host'
tool.mail_from_user = '发件人邮箱号'
tool.mail_from_user_pwd = '发件人pwd'
tool.send_mail_msg(to_user='收件人邮箱地址(列表)', title='邮件标题', content='邮件内容')
5、时间相关
tool.time_stamp() # 秒级时间戳10位
tool.time_stamp('ms') # 毫秒级时间戳13位
tool.get_now_time() # 获取当前时间 20201206000000
tool.get_now_time('-') # 获取当前时间 2020-12-06 00:00:00
tool.date_to_time_stamp('2012-01-01 00:00:00') # 时间字符串转为时间戳
tool.time_stamp_to_date(1732312234) # 时间戳转为时间字符串
6、格式转换
tool.json_dumps({"test": "python字典"}) # 字典转json
tool.json_loads('{"test": "python字典"}') # json转字典
tool.xml_to_dict('<xml><data>字符串</data></xml>') # xml转成python字典
tool.dict_to_xml({"test": "python字典"}) # python字典 转成xml
7、http 请求
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上
8、dubbo 接口
tool.dubbo_args('参数1', '参数2', '参数3') # dubbo接口参数
tool.invoke_dubbo('地址', '端口', '服务API名', '接口方法名', 'dubbo接口参数') # 请求dubbo接口
9、其他
tool.logger('日志信息')
tool.get_ip_by_url('url地址') # 获取ip
三、数据库语句(MySQL)
1、生成数据库 sql 语句
from prestool.PresMySql import SqlStr
sql = SqlStr()
2、查询语句
# target 不传时,为全部字段,即 *,where={'key':'value'}
sql.select_sql_str(table='table1', where={'id': 1, 'name': '张三'})
select * from table1 where id = 1 and name = '张三';
# target=[i1,i2,i3] 时,为相应字段
sql.select_sql_str(table='table1', target=['a', 'b', 'c'], where={'id': 1, 'name': '张三'})
select a, b, c from table1 where 1=1 and id=1 and name='张三';
# limit=10 limit='10,1000' 为筛选限制字段
sql.select_sql_str(table='table1', target=['a', 'b', 'c'], order={'age': 'desc', 'score': 'desc'}, limit=20)
select a, b, c from table1 where 1=1 order by age desc, score desc limit 20;
# where 条件中有的字段为 null 或者 not null 时
sql.select_sql_str(table='table1', target=['a', 'b', 'c'], where={'id': 1, 'name': 'null', 'age': not None})
select a, b, c from table1 where 1=1 and id=1 and name is null and age is not null;
# 支持排序语句
sql.select_sql_str(table='table1', target=['a', 'b', 'c'], order={'age': 'desc', 'score': 'desc'})
select a, b, c from table1 order by age desc, score desc;
# 支持查询 in 语句
sql.select_sql_str(table='table1', target=['a', 'b', 'c'], select_in={'orders': [123121312, 123123445, 213123]})
select a, b, c from table1 where 1=1 and orders in (123121312, 123123445, 213123);
# 支持 like 语句
sql.select_sql_str(table='table1', target=['a', 'b', 'c'], like={'name': '%光', 'address': "中国%"})
select a, b, c from table1 where 1=1 and name like '%光' and address like '中国%';
# 支持 between 语句
sql.select_sql_str(table='table1', target=['a', 'b', 'c'], between={'age': (10, 20), 'year': (2021, 2022)})
select a, b, c from table1 where 1=1 and age between 10 and 20 and year between 2021 and 2022;
# 支持大于、小于语句
sql.select_sql_str(table='table1', target=['a', 'b', 'c'],
compare={'age': {'>': 10, '<': 20}, 'year': {'>=': '2021'}})
select a, b, c from table1 where 1=1 and age > 10 and age < 20 and year >= 2021;
# 更新语句
target 为要更新的数据,为字典结构 (支持大于、小于语句、between 语句、like 语句、in 语句)
sql.update_sql_str(table='table1', target={'name': '李四', 'age': 15}, where={'id': 1, 'name': '张三'})
update table1
set name='李四',
age=15
where id = 1
and name = '张三';
# 删除数据
支持大于、小于语句、between 语句、like 语句、in 语句
sql.delete_sql_str(table='table1', where={'id': 1, 'name': '张三'})
delete
from table1
where id = 1
and name = '张三';
# 插入数据
sql.insert_sql_str(table='table1', target={'id': 1, 'name': '张三'})
insert into table1 (id, name)
values (1, '张三');
2、执行数据库语句
from prestool.PresMySql import PresMySql
pres = PresMySql()
# 初始化数据库信息
pres.mysql_host = ''
pres.mysql_port = 3306
pres.mysql_user = ''
pres.mysql_pwd = ''
pres.mysql_db_name = ''
pres.mysql_charset = 'utf8mb4'
执行相应语句即可,执行的方法参数等同于第三节所述的 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': '张三'})
自己封装的 Python 常用工具库(prestool)的更多相关文章
- python常用工具库介绍
Numpy:科学计算 HOME: http://www.numpy.org/ NumPy is the fundamental package for scientific computing wi ...
- Python常用的库简单介绍一下
Python常用的库简单介绍一下fuzzywuzzy ,字符串模糊匹配. esmre ,正则表达式的加速器. colorama 主要用来给文本添加各种颜色,并且非常简单易用. Prettytable ...
- PYTHON常用五大库
python常用五大库 Numpy Numpy 是python科学计算的基础包,本书大部分内容都基于numpy以及构建于其上的库.其功能有: 快速高效的多维数组对象ndarray 用于对数组执行元素级 ...
- python常用三方库 - openpyxl
目录 python常用三方库 - openpyxl 读取Excel文件 写入Excel文件 python常用三方库 - openpyxl openpyxl是一个第三方库, 可以处理xlsx格式的Exc ...
- python常用第三方库(转载)
Python标准库与第三方库详解(转载) 转载地址: http://www.codeweblog.com/python%e6%a0%87%e5%87%86%e5%ba%93%e4%b8%8e%e7%a ...
- python常用函数库收集。
学习过Python都知道python中有很多库.python本身就是万能胶水,众多强大的库/模块正是它的优势. 收集一些Python常用的函数库,方便大家选择要学习的库,也方便自己学习收集,熟悉运用好 ...
- 吐血整理!Python常用第三方库,码住!!!
Python作为一种编程语言近年来越来越受欢迎,它为什么这么火? 其中一个重要原因就是因为Python的库丰富--Python语言提供超过15万个第三方库,Python库之间广泛联系.逐层封装.几 ...
- javaScript常用工具库
对应于百度前端技术学院2015年春季的课程2相关内容 https://github.com/baidu-ife/ife/tree/master/2015_spring/task/task0002 ht ...
- python常用20库
python核心库和统计 简述 1. Requests.最着名的http库由kenneth reitz编写.这是每个python开发人员必备的. 2. Scrapy.如果您参与webscraping, ...
- python常用删除库的方法
本文记于初学py的时候,两年后补发. python常用库的安装方法一般有几种,比如: 1.编译过的exe包,直接无脑下一步就可以了. 2.pip install 库名,快速安装.自动匹配最新版本. 3 ...
随机推荐
- 洛谷P1174 打砖块 | CCPC2021网络赛8.28 1011 动态规划 分组背包
本文学习自洛谷社区 喜提CCPC2021网络赛原题 题意相当于是要在每一列中选若干个砖块打掉,消耗所需的子弹数并得到对应的得分.最大化k个子弹能得到的最大得分. 预处理出第 \(i\) 列 \(j\) ...
- VScode 中 Code Runner 插件乱码问题
安装好,Code Runner 插件,可以很方便的运行多种语言的文本,但是提示和输出经常会报错 进入 File - > Preference -> setting, 然后在输入框搜索 se ...
- 从头到尾创建一个vue项目
- 继承 封装 多态 java的三大特性
import java.util.Scanner;class A{ int ivar = 7; void m1(){ System.out.print("A's m1, "); } ...
- mybatis plus 中增删改查及Wrapper的使用
本文为博主原创,未经允许不得转载: mybatis plus 通过封装 baseMapper 以及 ServiceImpl ,实现对数据库的增删改查操作,baseMapper 是我们通常所说的 da ...
- Linux进阶命令-grep
Linux进阶命令----grep 目录 Linux进阶命令----grep grep 命令介绍 grep命令格式 常用选项 模式部分 匹配字符: 匹配次数: 位置锚定: grep 命令介绍 Linu ...
- MySQL本地服务器与MySQL57网络服务器区别
MySQL服务器与MySQL57服务器区别与不同处在哪里,他们各自的领域范围,能不能同时启动服务? 安装了MySQL-5.7.18.0版本数据库,版本中包含了MySQL Workbench可视化试图工 ...
- 百度网盘(百度云)SVIP超级会员共享账号每日更新(2024.01.23)
一.百度网盘SVIP超级会员共享账号 可能很多人不懂这个共享账号是什么意思,小编在这里给大家做一下解答. 我们多知道百度网盘很大的用处就是类似U盘,不同的人把文件上传到百度网盘,别人可以直接下载,避免 ...
- [转帖]浏览器HTTP请求并发数和TCP连接的关系
https://cloud.tencent.com/developer/article/1518678 面试题目(头条): 网页中的图片资源为什么分放在不同的域名下? 浏览器与服务器建立一个TCP连接 ...
- [转帖]PostgreSQL 统计所有数据表各自的总行数
一般来说,可以使用 count(*) 来获取具体某张表的总行数: SELECT count(0) FROM t_user; 如果想获得所有表的行数信息,可以使用以下 SQL 语句: SELECT re ...