如何用python在mysql上创建1亿条数据
建表
首先在MySQL的example库上创建表user
use example;
create TABLE `user` (`id` int(11) NOT NULL,`last_name` varchar(45) DEFAULT NULL,`first_name` varchar(45) DEFAULT NULL,`sex` set('M','F') DEFAULT NULL,`age` tinyint(1) DEFAULT NULL,`phone` varchar(11) DEFAULT NULL,`address` varchar(45) DEFAULT NULL,`password` varchar(45) DEFAULT NULL,`create_time` datetime DEFAULT NULL,PRIMARY KEY (`id`),KEY `idx_last_first_name_age` (`last_name`,`first_name`,`age`) USING BTREE,KEY `idx_phone` (`phone`) USING BTREE,KEY `idx_create_time` (`create_time`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
python脚本源码
用Python的MySQLdb模块连接msyql,每次批量插入100条,循环插入1000000次。本机测试的插入速度为每秒10000条左右。编写generate_user_data.py 脚本如下:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import MySQLdb
import MySQLdb.cursors
import random
import string
import time
#批量插的次数
loop_count = 1000000
#每次批量查的数据量
batch_size = 100
success_count = 0
fails_count = 0
#数据库的连接
conn = MySQLdb.connect(host="127.0.0.1", user="root", passwd="123456", db="example", port=3306, cursorclass = MySQLdb.cursors.SSCursor)
chars = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz'
digits = '0123456789'
def random_generate_string(length):return string.join(random.sample(chars, length), '')
def random_generate_number(length):if length > len(digits):digit_list = random.sample(digits, len(digits))digit_list.append(random.choice(digits))return string.join(digit_list, '')return string.join(random.sample(digits, length), '')
def random_generate_data(num):c = [num]phone_num_seed = 13100000000def _random_generate_data():c[0] += 1return (c[0],"last_name_" + str(random.randrange(100000)),"first_name_" + str(random.randrange(100000)),random.choice('MF'),random.randint(1, 120),phone_num_seed + c[0],random_generate_string(20),random_generate_string(10),time.strftime("%Y-%m-%d %H:%M:%S"))return _random_generate_data
def execute_many(insert_sql, batch_data):global success_count, fails_countcursor = conn.cursor()try:cursor.executemany(insert_sql, batch_data)except Exception, e:conn.rollback()fails_count = fails_count + len(batch_data)print eraiseelse:conn.commit()success_count = success_count + len(batch_data)print str(success_count) + " commit"finally:cursor.close()
try:#user表列的数量column_count = 9#插入的SQLinsert_sql = "replace into user(id, last_name, first_name, sex, age, phone, address, password, create_time) values (" + ",".join([ "%s" for x in xrange(column_count)]) + ")"batch_count = 0begin_time = time.time()for x in xrange(loop_count):batch_count = x * batch_sizegen_fun = random_generate_data(batch_count)batch_data = [gen_fun() for x in xrange(batch_size)]execute_many(insert_sql, batch_data)end_time = time.time()total_sec = end_time - begin_timeqps = success_count / total_secprint "总共生成数据: " + str(success_count)print "总共耗时(s): " + str(total_sec)print "QPS: " + str(qps)
except Exception, e:print eraise
else:pass
finally:pass
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
执行python脚本
python generate_user_data.py
查看数据
(function () {(function () {('pre.prettyprint code').each(function () { var lines = (this).text().split(′\n′).length;var(this).text().split('\n').length;var numbering = $('').addClass('pre-numbering').hide(); (this).addClass(′has−numbering′).parent().append((this).addClass('has-numbering').parent().append(numbering); for (i = 1; i
如何用python在mysql上创建1亿条数据相关推荐
- psid mysql_使用Python对MySQL数据库插入二十万条数据
importpymysqlimportrandomimportstring#建立数据库连接 mysql = pymysql.connect(host="数据库IP", user=& ...
- Mysql数据库快速插入亿级数据
Mysql数据库快速插入亿级数据 接手一个项目,该项目运行了两三年了.接手的时候,只有一个部署文档和全部代码,再没有其他文档了,也没有其他任何人了解这个项目.好吧,试着深入了解吧.代码在测试环境跑来了 ...
- python怎么返回上一步操作_一步一步教你如何用python操作mysql
工欲善其事,必先利其器.所以第一步,我们先下载第三方库.在这里,我用到的是pymysql库. 下载库:在命令行输入 1pip install pymysql 下载后可检验一下是否成功下载.直接在命令行 ...
- python 下载网页文件_『如何用python把网页上的文本内容保存下来』python爬取网页内容教程...
python爬虫:如何爬网页数据并将其放在文本 用requests库 r=r.requests.get(url) r.concent 保存到文件里就行了 如何用python把网页上的文本内容保存下来 ...
- python向数据库写入数据_如何用Python向Mysql中插入数据
我们使用Python经常会和Postgresql进行搭配,很少将python和mysql进行搭配.下面小编给大家分享如何用Python向Mysql中插入数据. 工具/原料 Pycharm 方法/步骤 ...
- 如何用 Python 分析 14 亿条数据?
(点击视学算法公众号,可快速关注) 英文:Steve Stagg,翻译:Ryden Sun juejin.im/post/5aceae206fb9a028d2084fea Google Ngram v ...
- 教你用Python向MySQL中插入一百万条测试数据
环境 Windows10+Python3.8+MySQL5.7 需求 在MySQL上构造一个100W条记录的表,要求有日期类型 存放5年的数据. 表结构 +-------+-------------+ ...
- MySQL Workbench 使用MySQL语法“创建表格以及插入数据”
我们的MySQL Workbench创建表格以及插入数据共有两种方式.一种方式:通过我们自己进行手动创建表格以及插入数据.另一种方式:就是使用我们的MySQL的语法,进行创建表格以及添加数据. 下面的 ...
- 谷歌为什登不上去github_我们分析了GitHub上5.46 亿条日志,发现中国开源虽然贡献大但还有这些不足......
作者 | InfoQ.X-lab编辑 | Tina 全球最大代码托管平台 GitHub 在 2019 年发布的年度报告中显示, GitHub 上目前已有超过 4000 万开发人员.将近 300 万个组 ...
最新文章
- WEB 打印的相关技术分析
- Spring Cloud Alibaba 一致性挑战:微服务架构下的数据一致性解决方案
- harmonyos上的程序用什么语言写,HarmonyOS应用开发 — HelloWorld应用开发E2E体验
- nmp 全局目录和缓存目录的配置
- Codeforces Round #727 (Div. 2) 题解
- Linux下出现ping:unknown host xxx.xxx问题的解决办法
- js与html页面分开,javascript – 当画布分割在多个页面上时,如何在使用html2canvas和jspdf时添加上边距?...
- Open3d之KDTree
- wr703n 4m固件 带打印机服务器_旗捷支招 | 如何关闭打印机固件自动更新?分分钟搞定!...
- Navicat无法导入excel文件的异常处理
- 华为云.通信云服务激活无限商业潜力
- 教育心理学有一句名言
- Wireshark The capture session could not be initiated on interface报错解决
- 单片机红绿灯加强版(kile仿真程序和protues硬件仿真)
- 小米air2se耳机只有一边有声音怎么办_盘点2020半入耳蓝牙耳机排名
- 非常简单-Linux环境下(有公网IP)或虚拟主机的环境下如何做一个网站???
- aab c式_aab表示的四字成语大全
- 如何查找一篇英文文章中出现频率最高的单词?
- Tomcat 6数据源的配置
- 学习笔记10--ASIL分解与冗余功能安全
热门文章
- ES5、ES6深拷贝、浅拷贝
- 华为HarmonyOS鸿蒙智能手表开发和设计需要知道的
- AttributeError: ‘str‘ object has no attribute ‘prefix_chars‘——类实例化不带括号的后果
- OSChina 周日乱弹 ——什么姑娘是女!王!大!人!
- 字符函数和字符串函数(上)
- unity编辑器上不穿模,真机Android上会穿模问题定位和解决
- android 汉化
- 2300套php网站源码模板 完整后台程序 整站带数据,ID41:建材自适应PC手机平板微信Seo结构送2300套PHP整站源码...
- 神经网络属于符号主义吗,神经网络符号表示
- 多旋翼位置控制器设计