python装饰器

来源:互联网 发布:手机游戏网络稳定软件 编辑:程序博客网 时间:2024/03/28 17:16
#decoratorsdef Query(fn):"""查询装饰器"""def wrapper(*args, **kv):conn=connect()kv['conn']=conncur=conn.cursor()cur.execute('SET NOCOUNT ON;')try:return fn(*args, **kv)except:LogErr()raisefinally:cur.execute('SET NOCOUNT OFF;')conn.close()return wrapperdef Execute(fn):"""增加 删除 修改 装饰器"""def wrapper(*args, **kv):conn=connect()kv['conn']=conncur=conn.cursor()cur.execute('SET NOCOUNT ON;')try:result= fn(*args, **kv)conn.commit()return resultexcept:conn.rollback()LogErr()raisefinally:cur.execute('SET NOCOUNT OFF;')conn.close()return wrapperclass Queryer:def __init__(self,conn=None,close=True):self.conn=connect() if not conn else connself.cur=self.conn.cursor()self.close=closeself.cur.execute('SET NOCOUNT ON;')def __enter__(self):return self.conndef __exit__(self, type, value, traceback):if type and value and traceback:LogErr()if self.close:self.cur.execute('SET NOCOUNT OFF;')self.conn.close()class Executer:def __init__(self,conn=None,close=True):self.conn=connect() if not conn else connself.cur=self.conn.cursor()self.close=closeself.cur.execute('SET NOCOUNT ON;')def __enter__(self):return self.conndef __exit__(self, type, value, traceback):if type and value and traceback:LogErr()self.conn.rollback()else:self.conn.commit()if self.close:self.cur.execute('SET NOCOUNT OFF;')self.conn.close()