zoukankan      html  css  js  c++  java
  • 使用装饰器减少try ...finally的重复使用

    @util.try_except_bskgk
    def added_user_handle(cur, search_time):
        added_user_sql = """
    
            select userName, FROM_UNIXTIME(createTime) as createTime
            from bskcommon.user
            where date(FROM_UNIXTIME(createTime)) = '%s' and userName != ''
            
        """%(search_time)
    
        cur.execute(added_user_sql)
        result = cur.fetchall()
    
        all_msg = {
            'result': util.mat_yes_added_user(result)
        }
    
        return all_msg
    #util.py
    def try_except_bsk(func):
    def wrap(*args):
    try:
    conn = linkbsk_db()
    cur = conn.cursor()
    result = func(cur, *args)
    except Exception as e:
    result = None

    log.logg().error(str(e), exc_info=True)

    print str(e)
    finally:
    cur.close()
    conn.close()
    return result

    return wrap
    #不使用装饰器 直接调用函数 在作用上没啥区别
    

    def try_except_bsk(func):
    def wrap(*args):
    try:
    conn = linkbsk_db()
    cur = conn.cursor()
           # return func(cur, *args) 不能这样写 因为会有很多连接没有关闭

    result = func(cur, *args)
    except Exception as e:
    result = None     #必须要有的 没有这句, 假如运行错误的话 就会报错《finally部分的result没有赋值》

    log.logg().error(str(e), exc_info=True)    #打印出错误的堆栈信息

    print str(e)
    finally:
    cur.close()
    conn.close()
    return result

    return wrap
    def test_data(): test_sql = 'select * from user_info limit 1' data = db_queryall_params(util.linkbskgk_db(), test_sql) print data test_data()
  • 相关阅读:
    小程序获知渠道弹出层设计
    小程序下拉菜单筛选
    align-conten和align-items的区别
    微信小程序文本如何换行
    微信小程序最新获取用户头像昵称的方法
    JQ版本对比
    选择收货地址列表的某一项将数据传到订单页面
    inline、block、inline-block属性的区别
    微博资料
    zookeeper知识点学习
  • 原文地址:https://www.cnblogs.com/wanghaonull/p/6841005.html
Copyright © 2011-2022 走看看