一,普通写入数据库

二,批量写入数据库

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

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数据库性能(二)的更多相关文章

  1. python测试mysql写入性能完整实例

    这篇文章主要介绍了python测试mysql写入性能完整实例,具有一定借鉴价值,需要的朋友可以参考下 本文主要研究的是python测试mysql写入性能,分享了一则完整代码,具体介绍如下. 测试环境: ...

  2. Python操作MySQL数据库(二)

    pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同. 下载安装: pip install pymysql 1.执行SQL语句 #!/usr/bin/env pytho ...

  3. 使用Python对MySQL数据库插入二十万条数据

    1.当我们测试的时候需要大量的数据的时候,往往需要我们自己造数据,一条一条的加是不现实的,这时候就需要使用脚本来批量生成数据了. import pymysql import random import ...

  4. python + docker, 实现天气数据 从FTP获取以及持久化(二)-- python操作MySQL数据库

    前言 在这一节中,我们主要介绍如何使用python操作MySQL数据库. 准备 MySQL数据库使用的是上一节中的docker容器 “test-mysql”. Python 操作 MySQL 我们使用 ...

  5. Python学习(二十五)—— Python连接MySql数据库

    转载自http://www.cnblogs.com/liwenzhou/p/8032238.html 一.Python3连接MySQL PyMySQL 是在 Python3.x 版本中用于连接 MyS ...

  6. Python操作Mysql数据库时SQL语句的格式问题

    一.概述 近日使用Python对Mysql数据库进行操作,遇到SQL语句死活出问题的情况.由于最初没有将异常打印出来,一直不知道原因.随后,将异常打印出来之后,通过异常信息,对代码进行修改.最终,成功 ...

  7. python使用mysql数据库

    一,安装mysql 如果是windows 用户,mysql 的安装非常简单,直接下载安装文件,双击安装文件一步一步进行操作即可. Linux 下的安装可能会更加简单,除了下载安装包进行安装外,一般的l ...

  8. python专题-Mysql数据库(python2._+ Mysqldb)

    Python使用MySQL数据库 MySQLdb驱动从2014年1月停止了维护. Python2 MySQLdb 一,安装mysql 如果是windows 用户,mysql 的安装非常简单,直接下载安 ...

  9. Python连接MySQL数据库的多种方式

    上篇文章分享了windows下载mysql5.7压缩包配置安装mysql 后续可以选择 ①在本地创建一个数据库,使用navicat工具导出远程测试服务器的数据库至本地,用于学习操作,且不影响测试服务器 ...

随机推荐

  1. RxJS——Operators

    RxJS 的操作符(operators)是最有用的,尽管 Observable 是最基本的.操作符最基本的部分(pieces)就是以申明的方式允许复杂的异步代码组合简化. 什么是操作符? 操作符是函数 ...

  2. Python内置函数复习

    filter sorted heapq counter namedtuple  reduce deque pickle islice re.split endswith stat os #filter ...

  3. linux 常用工具记录及简介

    前言 linuxz虽然各种软件的生态还比较差,但是大势所趋,早晚都是要用的.记录下自己常用的软件,要是那天系统崩了重装也舒服点 编程工具 pycharm专业版(社区版也能用,只是用惯了专业版) * 下 ...

  4. HDU3338 Kakuro Extension(最大流+思维构图)

    这道题一定要写一下,卡了好久. 题意: 有黑白两种方格,最上边一行和最左边一列一定是黑色,然后其余的地方有可能是黑色,有可能是白色,和白色相邻的黑色方格里有数字(1个或2个), 现在要求在白色方格里填 ...

  5. C#各版本新增功能

    本系列文章主要整理并介绍 C# 各版本的新增功能. C# 8.0 C#8.0 于 2019年4月 随 .NET Framework 4.8 与 Visual Studio 2019 一同发布,但是当前 ...

  6. discuz添加标签聚合页

    discuz使用视频教程前段时间把discuz原本的标签聚合页修改了一下,原本的标签聚合页只显示100条最新的标签,把它修改成了所有标签都显示,并加上分页. 修改方法: 1.修改/source/mod ...

  7. python + redis +ipset实现IP黑名单的动态添加及解封禁

    1.抽空用python做了一个 动态添加/删除IP黑名单 的程序(或者说实现方案),项目地址: https://gitee.com/lowmanisbusy/ip_blacklists, 2.这里的实 ...

  8. call和apply的模拟实现

    call 一句话介绍 call: call() 方法在使用一个指定的 this 值和若干个指定的参数值的前提下调用某个函数或方法. 举个例子: var foo = { value: 1 }; func ...

  9. hash isEqual

    hash Returns an integer that can be used as a table address in a hash table structure. If two object ...

  10. .dxf文件

    DXF 是 AutoCAD 与其它软件之间进行 CAD 数据交换的开放矢量数据文件格式,可以分为两类:ASCII 格式和二进制格式:ASCII 具有可读性好的特点,但占用的空间较大:二进制格式则占用的 ...