自动化单条insert
# -*- coding:utf-8 -*- import time from pymysql import * # 装饰器,计算插入50000条数据需要的时间 def timer(func): def decor(*args): start_time = time.time() func(*args) end_time = time.time() d_time = end_time - start_time print("the running time is : ", d_time) return decor @timer def add_test_users(): conn = connect(host='主机名', port='端口号', user='用户名', password='密码', database='数据库名', charset='utf8') cs = conn.cursor() # 获取游标 for num in range(0, 58000): try: sql = "insert into '表名'(字段名) values(值)" cs.execute(sql) except Exception as e: return conn.commit() # 提交 cs.close() conn.close() print('OK') add_test_users()
单条insert的话插入5w条数据大约用时5秒左右,相对来说效率不高
拼接sql语句,只执行一次insert
# -*- coding:utf-8 -*- import time from pymysql import * # 装饰器,计算插入50000条数据需要的时间 def timer(func): def decor(*args): start_time = time.time() func(*args) end_time = time.time() d_time = end_time - start_time print("the running time is : ", d_time) return decor @timer def add_test_users(): usersvalues = [] for num in range(1, 50000): usersvalues.append(('需要插入的字段对应的value')) # 注意要用两个括号扩起来 conn = connect(host='主机名', port='端口号', user='用户名', password='密码', database='数据库名', charset='utf8') cs = conn.cursor() # 获取光标 # 注意这里使用的是executemany而不是execute,下边有对executemany的详细说明 cs.executemany('insert into '表名'(字段名) values(%s,%s,%s,%s)', usersvalues) conn.commit() cs.close() conn.close() print('OK') add_test_users()
另外,针对executemany
execute(sql) : 接受一条语句从而执行
executemany(templet,args):能同时执行多条语句,执行同样多的语句可比execute()快很多,强烈建议执行多条语句时使用executemany
templet : sql模板字符串, 例如 ‘insert into table(id,name,age) values(%s,%s,%s)’
args: 模板字符串中的参数,是一个list,在list中的每一个元素必须是元组!!! 例如: [(1,‘mike’),(2,‘jordan’),(3,‘james’),(4,‘rose’)]
发表评论
侧栏公告
寄语
譬如朝露博客是一个分享前端知识的网站,联系方式11523518。
热评文章
标签列表
热门文章
友情链接