• python测试mysql数据库性能(二)


    一,普通写入数据库

    二,批量写入数据库

    三,普通写入数据库添加事务

    config = {
        'host': 'localhost',
        'port': 3306,
        'database': 'test',
        'user': 'root',
        'password': '1234qwer',
        'charset': 'utf8'
    }
    
    conn = pymysql.connect(**config)
    cur = conn.cursor()
    
    
    def timer(fn):
        def _wrapper(count):
            start = time.time()
            fn(count)
            seconds = time.time() - start
            print(u"{func}函数每 {count} 条数数据写入耗时 {sec}秒".format(func=fn, count=count, sec=seconds))
        return _wrapper
    
    
    # 普通写入
    @timer
    def ordinary_insert(count):
        sql = "insert into students1 (name, age, sex,id,cellphone,address,score) values ('tom666', '66', 'boy', '10066', '13900000066', 'shanghai', '66')"
        for i in range(count):
            cur.execute(sql)
    
    
    
    # 批量处理
    @timer
    def many_insert(count):
        sql = "insert into students1 (name, age, sex,id,cellphone,address,score)values(%s,%s,%s,%s,%s,%s,%s)"
    
        loop = count / 20
        stus = (('tom666','66','boy','10066','13900000066','shanghai','66'),('tom666','66','boy','10066','13900000066','shanghai','66'),
                ('tom666', '66', 'boy', '10066', '13900000066', 'shanghai', '66'),('tom666','66','boy','10066','13900000066','shanghai','66'),
                ('tom666', '66', 'boy', '10066', '13900000066', 'shanghai', '66'),('tom666','66','boy','10066','13900000066','shanghai','66'),
                ('tom666', '66', 'boy', '10066', '13900000066', 'shanghai', '66'),('tom666','66','boy','10066','13900000066','shanghai','66'),
                ('tom666', '66', 'boy', '10066', '13900000066', 'shanghai', '66'),('tom666','66','boy','10066','13900000066','shanghai','66'),
                ('tom666', '66', 'boy', '10066', '13900000066', 'shanghai', '66'),('tom666','66','boy','10066','13900000066','shanghai','66'),
                ('tom666', '66', 'boy', '10066', '13900000066', 'shanghai', '66'),('tom666','66','boy','10066','13900000066','shanghai','66'),
                ('tom666', '66', 'boy', '10066', '13900000066', 'shanghai', '66'),('tom666','66','boy','10066','13900000066','shanghai','66'),
                ('tom666', '66', 'boy', '10066', '13900000066', 'shanghai', '66'),('tom666','66','boy','10066','13900000066','shanghai','66'),
                ('tom666', '66', 'boy', '10066', '13900000066', 'shanghai', '66'),('tom666','66','boy','10066','13900000066','shanghai','66'))
    
        for i in range(int(loop)):
            cur.executemany(sql, stus)
    
    
    
    # 事务处理
    @timer
    def transaction_insert(count):
        sql = "insert into students1 (name, age, sex,id,cellphone,address,score)values(%s,%s,%s,%s,%s,%s,%s)"
    
        stus = ('tom666', '66', 'boy', '10066', '13900000066', 'shanghai', '66')
    
        if count > 0:
            try:
                for i in range(count):
                    cur.execute(sql, stus)
            except Exception as e:
                conn.rollback()  # 事务回滚
                print('事务处理失败', e)
            else:
                conn.commit()  # 事务提交
                print('事务处理成功, 关闭连接', cur.rowcount)
                cur.close()
                conn.close()
        else:
            print("输入的count有问题,无法执行数据库操作!")
    
    
    def test_insert(count):
        ordinary_insert(count)
        many_insert(count)
        transaction_insert(count)
    
    
    test_insert(20)

    输出结果:

    E:python_projectspractisesvenvScriptspython.exe E:/python_projects/practises/practise20191116/p20191208.py
    <function ordinary_insert at 0x0000026994A7BC18>函数每20条数数据写入耗时0.003995656967163086秒
    <function many_insert at 0x0000026994A7B8B8>函数每20条数数据写入耗时0.0009996891021728516秒
    事务处理成功, 关闭连接 1
    <function transaction_insert at 0x0000026994A7BA68>函数每20条数数据写入耗时0.007994651794433594秒
    
    Process finished with exit code 0
  • 相关阅读:
    HttpClient request payload post请求
    【Linux】svn添加用户
    手机抓包fiddle4的安装及配置
    【论文笔记】Social Role-Aware Emotion Contagion in Image Social Networks
    【Linux】crontab 定时启动sh
    DIV+CSS网页设计规范
    【机器学习】粗糙集属性约简算法与mRMR算法的本质区别
    【机器学习】DBSCAN Algorithms基于密度的聚类算法
    【机器学习】EM的算法
    【机器学习】K-means聚类算法与EM算法
  • 原文地址:https://www.cnblogs.com/111testing/p/12004595.html
Copyright © 2020-2023  润新知