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','','boy','','','shanghai',''),('tom666','','boy','','','shanghai',''),
- ('tom666', '', 'boy', '', '', 'shanghai', ''),('tom666','','boy','','','shanghai',''),
- ('tom666', '', 'boy', '', '', 'shanghai', ''),('tom666','','boy','','','shanghai',''),
- ('tom666', '', 'boy', '', '', 'shanghai', ''),('tom666','','boy','','','shanghai',''),
- ('tom666', '', 'boy', '', '', 'shanghai', ''),('tom666','','boy','','','shanghai',''),
- ('tom666', '', 'boy', '', '', 'shanghai', ''),('tom666','','boy','','','shanghai',''),
- ('tom666', '', 'boy', '', '', 'shanghai', ''),('tom666','','boy','','','shanghai',''),
- ('tom666', '', 'boy', '', '', 'shanghai', ''),('tom666','','boy','','','shanghai',''),
- ('tom666', '', 'boy', '', '', 'shanghai', ''),('tom666','','boy','','','shanghai',''),
- ('tom666', '', 'boy', '', '', 'shanghai', ''),('tom666','','boy','','','shanghai',''))
- 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', '', 'boy', '', '', 'shanghai', '')
- 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_projects\practises\venv\Scripts\python.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
python测试mysql数据库性能(二)的更多相关文章
- python测试mysql写入性能完整实例
这篇文章主要介绍了python测试mysql写入性能完整实例,具有一定借鉴价值,需要的朋友可以参考下 本文主要研究的是python测试mysql写入性能,分享了一则完整代码,具体介绍如下. 测试环境: ...
- Python操作MySQL数据库(二)
pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同. 下载安装: pip install pymysql 1.执行SQL语句 #!/usr/bin/env pytho ...
- 使用Python对MySQL数据库插入二十万条数据
1.当我们测试的时候需要大量的数据的时候,往往需要我们自己造数据,一条一条的加是不现实的,这时候就需要使用脚本来批量生成数据了. import pymysql import random import ...
- python + docker, 实现天气数据 从FTP获取以及持久化(二)-- python操作MySQL数据库
前言 在这一节中,我们主要介绍如何使用python操作MySQL数据库. 准备 MySQL数据库使用的是上一节中的docker容器 “test-mysql”. Python 操作 MySQL 我们使用 ...
- Python学习(二十五)—— Python连接MySql数据库
转载自http://www.cnblogs.com/liwenzhou/p/8032238.html 一.Python3连接MySQL PyMySQL 是在 Python3.x 版本中用于连接 MyS ...
- Python操作Mysql数据库时SQL语句的格式问题
一.概述 近日使用Python对Mysql数据库进行操作,遇到SQL语句死活出问题的情况.由于最初没有将异常打印出来,一直不知道原因.随后,将异常打印出来之后,通过异常信息,对代码进行修改.最终,成功 ...
- python使用mysql数据库
一,安装mysql 如果是windows 用户,mysql 的安装非常简单,直接下载安装文件,双击安装文件一步一步进行操作即可. Linux 下的安装可能会更加简单,除了下载安装包进行安装外,一般的l ...
- python专题-Mysql数据库(python2._+ Mysqldb)
Python使用MySQL数据库 MySQLdb驱动从2014年1月停止了维护. Python2 MySQLdb 一,安装mysql 如果是windows 用户,mysql 的安装非常简单,直接下载安 ...
- Python连接MySQL数据库的多种方式
上篇文章分享了windows下载mysql5.7压缩包配置安装mysql 后续可以选择 ①在本地创建一个数据库,使用navicat工具导出远程测试服务器的数据库至本地,用于学习操作,且不影响测试服务器 ...
随机推荐
- Servlet HttpServletResponse对象、HttpServletRequest对象
HttpServletResponse对象(response)的常用方法 setCharacterEncoding("utf-8") //设置响应的编码字符集 setCont ...
- Django 之 rest_framework 分页器使用
Django rest_framework 之分页器使用以及其源码分析 三种分页方式: 常规分页 -->PageNumberPagination 偏移分页 -->LimitOffsetPa ...
- 计算python脚本的运行时间
首先说一下我遇到的坑,生产上遇到的问题,我调度Python脚本执行并监控这个进程,python脚本运行时间远远大于python脚本中自己统计的程序执行时间. 监控python脚本执行的时间是36个小时 ...
- Codeforces A. Kyoya and Colored Balls(分步组合)
题目描述: Kyoya and Colored Balls time limit per test 2 seconds memory limit per test 256 megabytes inpu ...
- 这是一份非常适合收藏的Android进阶/面试重难点整理
写在前面 记得我大二时“不务正业”地自学Android并跟了老师做项目,到大三开始在目前的公司实习,至今毕业已有几年多,学习Android已经6.7年多了!但总感觉知识点很零散,并且不够深入,遇到瓶颈 ...
- Detectron2源码阅读笔记-(一)Config&Trainer
代码结构概览 核心部分 configs:储存各种网络的yaml配置文件 datasets:存放数据集的地方 detectron2:运行代码的核心组件 tools:提供了运行代码的入口以及一切可视化的代 ...
- HDU4183 Pahom on Water(来回走最大流,一个点只经过一次)
题意: 有n个圆,每个圆的中心和半径和一个频率都给定,只有一个频率最高的789为紫色,只有一个最低的400为红色,规则如下: 1.当两个圆严格相交时,且人是从红色到紫色的方向运动时可以由低频率向高频率 ...
- 项目Beta冲刺(团队)——05.29(7/7)
项目Beta冲刺(团队)--05.29(7/7) 格式描述 课程名称:软件工程1916|W(福州大学) 作业要求:项目Beta冲刺(团队) 团队名称:为了交项目干杯 作业目标:记录Beta敏捷冲刺第7 ...
- Python库的使用之-Sys模块
Python标准库之sys模块使用详解,讲解了使用sys模块获得脚本的参数.处理模块. 使用sys模块操作 模块搜索路径.使用sys模块查找内建模块.使用sys模块查找已导入的模块,重定向输出以及重定 ...
- 【Android Studio】 资源下载
Gradle各版本集合 http://services.gradle.org/distributions/ Android Studio各版本集合 http://www.android-studio. ...