随笔 - 836  文章 - 1 评论 - 40 阅读 - 102万
< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5

摘要:  

1自动化单条insert  => 单条insert的话插入5w条数据大约用时5秒左右,相对来说效率不高

2拼接sql语句,只执行一次insert   =>使用这种批量插入方式插入5w条数据用时大约不到1秒

 

1.自动化单条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 "+str(func.__name__)+" running time is : ", d_time)

    return decor

@timer
def add_test_users():

    conn = connect(host='127.0.0.1', port='3306', user='root', password='root', database='数据库名', charset='utf8')
    cs = conn.cursor()  # 获取游标
    for num in range(0, 50000):
        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秒左右,相对来说效率不高

 

2.拼接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(('zhangsan','23'))  # 注意要用两个括号扩起来

    conn = connect(host='127.0.0.1', port='3306', user='root', password='root', database='数据库名', charset='utf8')
    cs = conn.cursor()  # 获取光标
    # 注意这里使用的是executemany而不是execute,下边有对executemany的详细说明
    cs.executemany('insert into '表名'(name,age) values(%s,%s)', usersvalues)
    conn.commit()
    cs.close()
    conn.close()
    print('OK')
add_test_users()
复制代码

原文: https://blog.csdn.net/weixin_42703149/article/details/85120029

posted on   lshan  阅读(122)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
历史上的今天:
2018-09-28 POI 生成带联动下拉框的excel表格
2018-09-28 JPA注解@SecondaryTables 实现一个实体映射多张数据库表
2018-09-28 docker 带参数启动 配合springboot profile
点击右上角即可分享
微信分享提示