代码改变世界

pymysql装饰器封装

2019-12-08 21:10  清风软件测试开发  阅读(387)  评论(0编辑  收藏  举报

pymysql装饰器封装

def openClose(fun):
    def run(sql=None):
        coon =pymysql.connect(host='localhost' ,port=3306 ,user='root', password='1234qwer', db='test', charset='utf8')
        cursor = coon.cursor()
        try:
            cursor.execute(fun( sql))
            data = cursor.fetchall()
            coon.commit()
            print(data)
        except Exception as e:
            coon.rollback()
            print('运行', str(fun), '方法时出现错误,错误代码:', e)
        finally:
            cursor.close()
            coon.close()
    return run

@openClose
def runSql(sql=None):
    if sql is None:
        sql = 'select * from students1'
    return sql

runSql()
runSql(‘select * from students1‘ where name= ‘tom1’)

 

 

 

添加时间记录功能

添加时间记录功能
def openClose(fun):
    def run(sql=None):
        coon =pymysql.connect(host='localhost' ,port=3306 ,user='root', password='1234qwer', db='test', charset='utf8')
        cursor = coon.cursor()
        try:
            start_time = time.time()
            cursor.execute(fun( sql))
            data = cursor.fetchall()
            coon.commit()
            end_time = time.time()
            print('持续时间:'+str(end_time - start_time))
            print(data)
        except Exception as e:
            coon.rollback()
            print('运行', str(fun), '方法时出现错误,错误代码:', e)
        finally:
            cursor.close()
            coon.close()
    return run

@openClose
def runSql(sql=None):
    if sql is None:
        sql = 'select * from students1'
    return sql

runSql()
输出:

 

 

 open_and_close_db 重要!重要!重要!

open_and_close_db  重要!重要!重要!

def open_and_close_db(do_sql):
    def wrapper(sql='select * from students1'):
        coon = pymysql.connect(host='localhost' ,port=3306 ,user='root', password='1234qwer', db='test', charset='utf8')
        cursor = coon.cursor()
        start_time = time.time()
        do_sql(cursor, coon, sql)
        cursor.close()
        coon.close()
        end_time = time.time()
        print('持续时间:' + str(end_time - start_time))
    return wrapper

@open_and_close_db
def do_sql(cursor,coon,sql):
    try:
        cursor.execute(sql)
        data = cursor.fetchall()
        coon.commit()
        print(data)
    except Exception as e:
        coon.rollback()
        print('运行时出现错误,错误代码:', e)

do_sql()
do_sql("update students1 set name = 'tom99999' where score = 44")

输出: