广告
返回顶部
首页 > 资讯 > 数据库 >python批量插入数据到mysql
  • 654
分享到

python批量插入数据到mysql

mysql数据库sql 2023-09-06 13:09:43 654人浏览 八月长安
摘要

使用python批量插入数据到mysql的三种方法 自动化单条insert # -*- coding:utf-8 -*-import timefrom pyMysql import *# 装饰器,计算插入50000条数据需要的时间def t

使用python批量插入数据到mysql的三种方法

自动化单条insert

# -*- coding:utf-8 -*-import timefrom 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@timerdef 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 timefrom 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@timerdef 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()

使用这种批量插入方式插入5w条数据用时大约不到1秒

另外,针对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’)]

使用load data infile 加载到mysql

需要注意的是,这种方式本来是在mysql里边执行的命令,而这里是用代码实现的命令

如果是在linux下,需要进行下边几个步骤

在桌面写个文本文件,里边的内容对应下边的数据表字段即可
在这里插入图片描述
在这里插入图片描述

cd /var/lib/mysql-files/
切换到这个目录,将文本文件移动到这个目录下,如果不在这个目录下执行的话加载的时候会出现错误,当然也可以选择修改mysql配置,只不过这种方法相对比较简单

对应load data infile 可以在mysql里边直接执行文件即可
load data infile ‘/var/lib/mysql-files/data.txt’ into table ‘表名’(字段名)     这个命令

load data [low_priority] [local] infile ‘file_name txt’ [replace | ignore]
into table tbl_name
[fields
[terminated by’t’]
[OPTIONALLY] enclosed by ‘’]
[escaped by’’ ]]
[lines terminated by’n’]
[ignore number lines]
[(col_name, )]

这个是load data infile的完整命令,带[ ]的是可选参数 下面解释几个比较常用的参数
[terminated by’t’] 这个意思就是文本字段里边以什么分隔
如果文本文件是这样:

小一,12,男
小二,13,女
小三,12,男

那么就是应该terminated by ’ , ’ ,不设置默认的就是制表符分隔,上边定义的文本文件正好也就是制表符,因此没有做设置,按照的就是默认值

==enclosed by == 这个的意思是字段是以什么包裹着
如果文本文件是这样:

“小一”,“12”,“男”
“小二”,“13”,“女”
“小三”,“12”,“男”

那么参数就应该这样写:enclosed by “”

综合以上三种方法比较,第三种方法效率最高,因此建议用第三种方

python向mysql插入大量数据时注意事项

通过Python向mysql插入大量数据时:

for + cursor.execute(sql),最后集中提交(commit())

cursor.executemany(sql,list)

两种方法效率上和功能上有一定差异。26万条数据,使用第一种方法需要约1.5小时,使用第二种方法只需要10几秒。

executemany的用法:import pymysqllist_1 = [('a',1),('b',2),(None,3)]  # 元素是不是元组都可以sql_1 = 'insert into 表明(字段1,字段2) values(%s,%s)' # 注意,这里的%s不需要加引号,使用execute需要加引号。# 另外,executemany 在执行过程中能够将python的None转为sql的nulldb = pymysql.connect(host= ....)cursor = db.cursor()cursor.executemany(sql_1,list_1)db.commit()cursor.close()db.close()print('完成')


二、自动提交

在创建连接的时候,增加参数 autocommit = 1 ,当发生update等操作时,会实时更新到数据库内。否则要通过 conn.commit() 来提交到数据库进行具体操作。

如果没有设置自动提交,也没有手动提交,当进行插入或更新等操作时,只在本地客户端能看到更新,在其他客户端或数据库内,数据无变化。

# 实时操作,适合随时少量、频繁的更新
 

import pymysqlconn = pymysql.connect(    host='XXX.XXX.XXX.XXX',     user='XXXXX',     password='XXXXX',     db='XXXXX',     port=3306,     charset='utf8',    autocommit = 1 ,    ) # 集中大批量操作数据 import pymysqlconn = pymysql.connect(    host='XXX.XXX.XXX.XXX',     user='XXXXX',     password='XXXXX',     db='XXXXX',     port=3306,     charset='utf8',    ) SQl相关操作略 conn.commit()  # 提交



原文链接:https://blog.csdn.net/pxx000000/article/details/126600034

来源地址:https://blog.csdn.net/qq_35224503/article/details/130333778

您可能感兴趣的文档:

--结束END--

本文标题: python批量插入数据到mysql

本文链接: https://www.lsjlt.com/news/397056.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python批量插入数据到mysql
    使用python批量插入数据到mysql的三种方法 自动化单条insert # -*- coding:utf-8 -*-import timefrom pymysql import *# 装饰器,计算插入50000条数据需要的时间def t...
    99+
    2023-09-06
    mysql 数据库 sql
  • python MySQL 批量插入
    # coding:utf-8 import pymysql # 打开数据库连接 db = pymysql.connect(host='localhost', port=3306, user='u...
    99+
    2023-01-31
    批量 python MySQL
  • python向mySQL批量插入数据的方
    通过调用mySQLdb python库中的 cursor.executemany()函数完成批量处理。 今天用这个函数完成了批量插入 例程: def test_insertDB():     conn = database.Connect...
    99+
    2023-01-31
    批量 数据 python
  • C# MySQL 插入大批量数据
    一、定义DataTable的数据类型 private DataTable GetDataTableFromExternalSource(string tablename) { DataTable dat...
    99+
    2023-09-08
    mysql c# 数据库
  • Android批量插入数据到SQLite数据库
      Android中在sqlite插入数据的时候默认一条语句是一个事务,因此如果存在上万条数据插入的话,那需要执行上万次插入操作,操作速度可想而知。因此在Android中插...
    99+
    2022-06-06
    数据 sqlite数据库 SQLite Android
  • 如何用Python将数据批量的插入到数据库
    这篇文章给大家介绍如何用Python将数据批量的插入到数据库,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。我是一名挣扎在编程链底端的pythoner,工作中既要和数据打交道,也要保持和erp系统,web网站友好的&qu...
    99+
    2023-06-16
  • MySQL中怎么批量插入数据
    本篇文章为大家展示了MySQL中怎么批量插入数据,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.创建测试表mysql> show create table ...
    99+
    2022-10-18
  • Mysql大数据批量插入方法
    MySQL是当前最流行的关系型数据库之一,大数据批量插入是MySQL中常用的操作之一。在处理大量数据时,如果一条一条地插入会极大地影响效率,因此批量插入是一个更好的选择,可以大大提高数据的处理速度。下面介绍几种MySQL大数据批量插入的方法...
    99+
    2023-09-14
    mysql 大数据 数据库
  • python操作mysql批量插入
    一、大量信息插入 通过python向mysql插入大量数据时,可以有两种方法: for + cursor.execute(sql),最后集中提交(commit()) cursor.executemany(sql,list) 两种方法效率上和...
    99+
    2023-08-31
    mysql 数据库 python
  • 大批量数据分批批量插入或更新(Mybatis+MySQL)
    大批量数据分批批量插入或更新 在MySQL数据库的前提下,插入或更新大批量数据。首先批量插入需要考虑到以下几个因素: 数据库一次可以承受多大或者多少条数据的插入批量插入是否会占用Mysql资源太久,影响系统整体使用性能代码中的集合是否会造成...
    99+
    2023-08-30
    mybatis mysql 数据库 java spring boot
  • 【mysql】向mysql数据库批量插入数据(循环)
    错误插入  delimiter $$ //以delimiter来标记用$表示存储过程结束 create procedure pre() //创建pre()存储方法 begin declare i int; //定义i变量 s...
    99+
    2021-08-13
    【mysql】向mysql数据库批量插入数据(循环)
  • Elasticsearch批量插入数据
    Elasticsearch批量插入数据 使用bulk批量操作数据库 1. 创建批量操作文件 格式: {"index":{"_index":"home","_type":"home",""_id":"2"}}...
    99+
    2022-10-18
  • SQL批量插入数据
    MS SQL Server数据库批量插入数据的sql语句总结:第一种:insert into tb_NameList(Name,InsertDate,UpdateDate)values('aa',GETDA...
    99+
    2022-10-18
  • java 批量插入数据
    批量插入数据,常见的使用mybatis foreach 插入的方式,原始的方式和批处理 1,常见的mybatis foreach xml insert into CODEINFO (CODE_TYPE, CODE, MEAN, STAT...
    99+
    2023-09-03
    mybatis mysql 批量插入
  • MySql批量插入时如何不重复插入数据
    目录前言一、insert ignore into二、on duplicate key update三、replace into总结前言 Mysql插入不重复的数据,当大数据量的数据需...
    99+
    2022-11-12
  • Android批量插入数据到SQLite数据库的方法
    Android中在sqlite插入数据的时候默认一条语句就是一个事务,因此如果存在上万条数据插入的话,那就需要执行上万次插入操作,操作速度可想而知。因此在Android中插入数...
    99+
    2022-06-06
    方法 数据 sqlite数据库 SQLite Android
  • Python操控mysql批量插入数据的实现方法
    在Python中,通过pymysql模块,编写简短的脚本,即方便快捷地控制MySQL数据库 一、连接数据库         使用的函数:...
    99+
    2022-05-13
    Python mysql批量插入数据 python MySQL 批量插入
  • mysql中怎么批量插入规律数据
    mysql中怎么批量插入规律数据,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Sql代码  insert into CPPRADAR( S...
    99+
    2022-10-18
  • MyBatis批量插入/修改/删除MySql数据
    前言 由于项目需要生成多条数据,并保存到数据库当中,在程序中封装了一个List集合对象,然后需要把该集合中的实体插入到数据库中,项目使用了Spring+MyBatis,所以打算使用M...
    99+
    2022-11-12
  • mysql中怎么使用php批量插入数据
    这篇文章将为大家详细讲解有关mysql中怎么使用php批量插入数据,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。  假如说我有这样一个表,我想往这个表里面插...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作