# pyeasytd **Repository Path**: kingons/pyeasytd ## Basic Information - **Project Name**: pyeasytd - **Description**: Python Easy To Develop. Python 简化处理工具, 轻松、快捷编码。 - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2020-02-16 - **Last Updated**: 2022-01-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## pyeasy - python eaasy to develop ## 使Python开发变的更简单 使用示例: 1.Mysql操作(常用于爬虫场景, 不支持事务) ```python from pyeasytd.mysql_util import MysqlUtil # 通过工具获取连接对象MysqlEasyConnection conn = MysqlUtil.connect(host='xx', port=3306, username='xx', password='xx', db='xx') # 使用sql插入数据 conn.insert(sql='insert into test_tb(name) values("name1")') # 不推荐 conn.insert(sql='insert into test_tb(name) values(%s)', args=('name1', )) # 插入一个字典对象 conn.insert_dict(table='test_tb', data={'name': 'name2'}) # 插入一个字典对象,若已存在则覆盖 conn.insert_dict(table='test_tb', data={'name': 'name2'}, mode='overwrite') # 插入一个字典对象,若已存在则忽略 conn.insert_dict(table='test_tb', data={'name': 'name2'}, mode='ignore') # 插入一个字典对象,若不存在表则创建表,若缺失列则添加列, 以key为字段名,key不支持中文,若有中文建议使用拼音转换工具转为拼音存储 conn.insert_dict_auto_add_table_and_column(table='test_tb', data={'name': 'name2', 'age': 18}) # 插入一个字典对象,若表不存在建表时使用字典对象的一个字段作为主键 conn.insert_dict_auto_add_table_and_column(table='test_tb', data={'name': 'name2', 'unique_id': 'xxxx'}, primary_name='unique_id') # 批量插入数据,对数据内部进行分批多次写入,默认每条sql批量写入200条 conn.insert_dicts(table='test_tb', data=[{'name': 'name1'}, {'name': 'name2'}]) # 自定义对象插入 class User: name = None age = None def __init__(self, name, age): self.name = name self.age = age conn.insert_dict(table='user_tb', data=User('name1', None)) # sql查询, 默认返回[{}, {}] 结构 conn.query('select * from test_tb where id=1') # 不推荐 conn.query('select * from test_tb where id=%s', args=(1,)) # sql查询返回tuple[(), ()] conn.query('select * from test_tb where id=%s', args=(1,), type='tuple') # 批量插入实战示例(该实例并非最优实现,可自行根据业务进行调整) # 可从其他消息队列获取消费数据,批量入库,这里模拟爬虫数据字段不一致场景 def get_key(keys): ''' 模拟获取一组数据唯一key方法,可通过hash等算法实现 ''' key_list = list(keys) key_list.sort() return '_'.join(key_list) data = [{'name': f'name{i}'} if i % 2 == 0 else {'age': i} for i in range(100000)] # 使用第一条数据建表 conn.insert_dict_auto_add_table_and_column(table='test_tb',data=data[0]) data = data[1:] try: # 尝试批量写入 conn.insert_dicts(table='test_tb', data=data) except RuntimeError as e: # 存在字段不一致则分组分批 group = {} for one in data[1:]: key = get_key(one.keys()) queue = group.get(key, []) queue.append(one) group[key] = queue for value in group.values(): # 对一组数据进行批量写入 conn.insert_dict_auto_add_table_and_column(table='test_tb', data=value[0]) if len(value) > 1: conn.insert_dicts(table='test_tb', data=value[1:]) ``` 2 企业微信机器人推送消息操作 ```python from pyeasytd.wechat import send_message_to_enterprise_wechat send_message_to_enterprise_wechat(...) ``` 3.发送邮件操作 ```python from pyeasytd import send_email_old, send_mail send_email_old(...) send_mail(...) ``` #### 0.0.11版本变更内容 1.Mysql插入数据方法insert_dict与insert_dicts新增update模式, mode传入update将会使用 insert into ... on duplicate key update... 处理 #### 0.0.9版本变更内容 1.Mysql查询工具优化 #### 0.0.5版本变更内容 1.新增发送邮件方法 #### 0.0.4版本变更内容 1.新增企业微信群机器人推送方法 #### 0.0.3版本变更内容: 1.新增XlsxFileEasyEntry实体 2.新增XlsxFileUtil工具类 0.0.2版本变更内容: 1.新增FileUtil工具类 0.0.1版本变更内容: 1.新增MysqlEasyEntry,JsonEasyEntry实体 2.新增MysqlUtil,JsonUtil工具类