#使用contextmanager,设置上下文
class DBTools_V2():
    def __init__(self, host='192.168.0.188', port=3306, db='xx', user='xx', passwd='xx?', charset='utf8'):
        # 建立连接
        self.conn = pymysql.connect(host=host, port=port, db=db, user=user, passwd=passwd, charset=charset)
        # 创建游标,操作设置为字典类型
        self.cur = self.conn.cursor(cursor=pymysql.cursors.DictCursor)

    def select_by_parameters(self, sql, params=None):
        try:
            self.cur.execute(sql, params)
            result = self.cur.fetchall()
            return result
        except Exception as e:
            print(e)

    def update_by_parameters(self, sql, params=None):
        try:
            count = self.cur.execute(sql, params)
            return count
        except Exception as e:
            print(e)

@contextmanager
def create_mysql_connect(host='192.168.0.188', port=3306, db='xx', user='xx', passwd='xx?', charset='utf8'):
    # with 执行部分
    print("开始执行")
    db = DBTools_V2(host=host, port=port, db=db, user=user, passwd=passwd, charset=charset)
    # as 赋值
    yield db
    # 执行完代码后的处理
    db.conn.commit()
    db.cur.close()
    db.conn.close()