【举个例子】

需要在学生表里插入10w条不同的数据,包括学生的编号(唯一)、姓名、性别、年龄、入学时间、班级、邮箱、手机号。

目录

方法一(执行语句耗时13s):

1、通过python生成包含insert语句的txt文件

2、复制txt文件里的insert语句

3、在mysql执行该insert语句

方法二(执行语句耗时3s):

1、直接python连接mysql,执行生成的语句


方法一(执行语句耗时13s):

1、通过python生成包含insert语句的txt文件

可以先尝试生成10条(把里面的100000改成10即可),成功后再生成10w条。

import random
import string
import time#生成name
def create_name():first_name = ["柳", "令狐", "慕容","文","西门","秦","向","迪丽","虞","白","诸葛","古","老","方","房","成"]dict = ["鹤", "冲", "棣","钱","纤","露","璐","热","森","子","汤","杏","魅","格","凉","凌","牧","暮","神","贤"]last_name = ''for i in range(random.randint(1,2)):last_name += random.choice(dict)return random.choice(first_name)+last_name#生成date
def date():a1=(2013,1,1,0,0,0,0,0,0)         #设置开始日期时间元组(2013-01-01 00:00:00)a2=(2017,12,31,23,59,59,0,0,0)    #设置结束日期时间元组(2017-12-31 23:59:59)start=time.mktime(a1)    #生成开始时间戳end=time.mktime(a2)      #生成结束时间戳t = random.randint(start, end)    #在开始和结束时间戳中随机取出一个date_touple = time.localtime(t)   #将时间戳生成时间元组return time.strftime("%Y-%m-%d %H:%M:%S", date_touple)#生成email
def create_email():# 首先生成用户名# 规定用户名由6~8位的随机大小写字母加数字组成chars = string.ascii_letters + string.digitsn1 = random.choice((6,8))user_name = ''for i in range(n1):c = random.choice(chars)s = str(c)user_name += s# 再生成域名# 规定域名由3~5位的随机大小写字母加数字组成n2 = random.choice((3,5))domain_name = ''for i in range(n2):c = random.choice(chars)s = str(c)domain_name += s# 随机选取后缀名list2 = ['.com','.org','.net','.cn']last_name = random.choice(list2)return user_name+'@'+domain_name+last_nameinsert_sql = "INSERT INTO `wyy_test`.`t_student`  VALUES "
with open("b.txt", "a") as fp:fp.write(insert_sql+"\n")for id in range(100000):a = "('%s', '%s', '%s','%s','%s','%s班','%s','%s'),"%(str(id+1),create_name(),random.choice('男女'),random.randint(18,24),date(),random.randint(1,10),create_email(),str(id+18600000000))with open("b.txt", "a", encoding="utf-8") as fp:fp.write(a+"\n")

2、复制txt文件里的insert语句

注意将最后的“,”改成“;”

3、在mysql执行该insert语句

如果字符串超过限制,会抛出异常并提示执行语句的长度,将max_allowed_packet改成大于执行语句的长度,然后重新执行语句即可。

show global variables like 'max_allowed_packet'; —— 查看最大允许包

set global max_allowed_packet=xxx; —— 设置最大允许包

方法二(执行语句耗时3s):

1、直接python连接mysql,执行生成的语句

import pymysql
import random
import string
import timedbinfo = {"host": "xx.xx.xx.xxx","user": "xxxx","password": "xxxxxxxx","port": xxxx}class DbConnect():def __init__(self, db_cof, database=""):self.db_cof = db_cofself.db = pymysql.connect(database=database,cursorclass=pymysql.cursors.DictCursor,**db_cof)self.cursor = self.db.cursor()def execute(self, sql):try:self.cursor.execute(sql)self.db.commit()except:self.db.rollback()def close(self):self.db.close()if __name__ == '__main__':#生成namedef create_name():first_name = ["柳", "令狐", "慕容","文","西门","秦","向","迪丽","虞","白","诸葛","古","老","方","房","成"]dict = ["鹤", "冲", "棣","钱","纤","露","璐","热","森","子","汤","杏","魅","格","凉","凌","牧","暮","神","贤"]last_name = ''for i in range(random.randint(1,2)):last_name += random.choice(dict)return random.choice(first_name)+last_name#生成datedef date():a1=(2013,1,1,0,0,0,0,0,0)         #设置开始日期时间元组(2013-01-01 00:00:00)a2=(2017,12,31,23,59,59,0,0,0)    #设置结束日期时间元组(2017-12-31 23:59:59)start=time.mktime(a1)    #生成开始时间戳end=time.mktime(a2)      #生成结束时间戳t = random.randint(start, end)    #在开始和结束时间戳中随机取出一个date_touple = time.localtime(t)   #将时间戳生成时间元组return time.strftime("%Y-%m-%d %H:%M:%S", date_touple)#生成emaildef create_email():# 首先生成用户名# 规定用户名由6~8位的随机大小写字母加数字组成chars = string.ascii_letters + string.digitsn1 = random.choice((6,8))user_name = ''for i in range(n1):c = random.choice(chars)s = str(c)user_name += s# 再生成域名# 规定域名由3~5位的随机大小写字母加数字组成n2 = random.choice((3,5))domain_name = ''for i in range(n2):c = random.choice(chars)s = str(c)domain_name += s# 随机选取后缀名list2 = ['.com','.org','.net','.cn']last_name = random.choice(list2)return user_name+'@'+domain_name+last_nameinsert_sql = "INSERT INTO `wyy_test`.`t_student`  VALUES "insert_values = "".join(["('%s', '%s', '%s','%s','%s','%s班','%s','%s'),"%(str(id+1),create_name(),random.choice('男女'),random.randint(18,24),date(),random.randint(1,10),create_email(),str(id+18600000000))for id in range(100000)])sql = insert_sql + insert_values[:-1] + ";"time1 = time.time()db = DbConnect(dbinfo, database="wyy_test")db.execute(sql)db.close()time2 = time.time()print("总过耗时:%s秒" % (time2 - time1))

在数据库插入大量不同数据相关推荐

  1. mysql java datetime_Java向mysql数据库插入datetime类型数据实例(精)

    在Mysql数据库中日期跟时间有两种: 1.date类型,date类型也就是我们常见的储存yyyy-MM-dd类型的日期,它不能储存时间,也就是只能储存日期, 2.dateitme就是可以储存日期同时 ...

  2. mysql插10万条数据_MySQL数据库插入100w条数据要花多久?

    MySQL数据库插入100w条数据要花多久? 1.多线程插入(单表) 2.多线程插入(多表) 3.预处理SQL 4.多值插入SQL 5.事务(N条提交一次) # 多线程插入(单表) 问:为何对同一个表 ...

  3. C#数据库插入多条数据,抛出异常:另一个 SqlParameterCollection 中已包含 SqlParameter

    解决办法很简单:添加语句:cmd.Parameters.Clear(); 原理:在SqlCommand使用完后清理SqlParameter. 代码示例: //定义连接数据库的配置字符串,需要填入你的连 ...

  4. python连接oracle数据库 插入clob类型数据

    python连接oracle数据库 插入clob类型数据 连接数据库 import cx_Oracle as cx #导入模块 con = cx.connect('root', 'root123', ...

  5. 你向 Mysql 数据库插入 100w 条数据用了多久?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 目录 1.多线程插入(单表) 2.多线程插入(多表) 3.预处理S ...

  6. mysql怎样循环插入数据_你向 Mysql 数据库插入 100w 条数据用了多久?

    多线程插入(单表) 多线程插入(多表) 预处理SQL 多值插入SQL 事务(N条提交一次) 多线程插入(单表) 问:为何对同一个表的插入多线程会比单线程快?同一时间对一个表的写操作不应该是独占的吗? ...

  7. 在数据库插入带小数点数据的问题

    想在mysql插入以下数据 设计表的时候没有注意,之前都用的int,这次换成了double,但是插入第一条3.50的时候数据库显示为:查了之后知道是设计表的时候没有注意小数点的设置 转载于:https ...

  8. Oracle数据二进制传输,Oracle数据库插入二进制字段数据

    oracle数据库喜欢搞特殊,二进制字段数据不能直接插入,需先再该字段插入oracle函数返回的的初始数据,然后在查询更新该字段.下面以Blob字段类型为例: 1.插入初始数据 Class.forNa ...

  9. java 数据库插入数据_java向数据库插入N条数据

    packageaction;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;import ...

最新文章

  1. 南方科技大学唐圆圆组招聘环境相关领域科研人才(年薪33~50万)
  2. 交管12123显示当前环境存在风险_政策|取消驾驶证年龄上限、推行异地通办,12项交管新政来了...
  3. 【Java 并发编程】CountDownLatch 使用场景示例
  4. delphi和INNO SETUP 文件关联操作
  5. CodeForces - 1348D Phoenix and Science(贪心)
  6. scss 文件里的特殊符号 @ 和 @include 的用法
  7. falsk 请求没有返回值报错
  8. WinCE中命令行工具Viewbin简介
  9. PageAdmin网站建设教程:仿58同城站群系统实现不同地区Ip跳转不同分站
  10. 标准IT POD之美
  11. 前端基础之HTML特殊字符集和表情集
  12. 手把手教学 玩转苹果HomeKit
  13. 美国大学计算机科学专业研究生排名,美国大学计算机科学专业研究生排名介绍...
  14. Daily Scrum Meeting 11.04
  15. C语言编程集合A和B的交集,求两个递增链表A和B的交集,并将结果放在链表A中
  16. JAVA课程设计——小学数学练习
  17. 电视剧《龙虎人生》剧照
  18. [笔记] 最优化方法 - 凸集
  19. reactos操作系统实现(3)
  20. Duplicate Alias Error When Deploying Planning Application From Epma 11.1.2 (Doc ID 1319989.1)

热门文章

  1. 3.4.10nbsp;孙正义
  2. CUMT 1031 Order
  3. 响铃:连续三季翻番,在收入问题上腾讯云如何体现发展质量优势?
  4. 2021编程语言top10,C蝉联第一,Python超越Java成为第二
  5. 基于大数据的健康未来
  6. 关于人体血液循环的猜想
  7. pwn-栈迁移-ROP
  8. 计算机系统必须配置,AI运行需要什么电脑配置?(复杂路径,且流畅)
  9. 小红帽系统搭建dns服务器,红帽7(centos 7 )配置DNS服务器
  10. Oceanus的实时流式计算实践与优化