Python操控mysql批量插入数据的实现方法


Posted in Python onOctober 27, 2020

在Python中,通过pymysql模块,编写简短的脚本,即方便快捷地控制MySQL数据库

一、连接数据库

        使用的函数:pymysql.connect

        语法:db=pymysql.connect(host='localhost',user='root',port=3306,password='Your password',db='database_name')

Python操控mysql批量插入数据的实现方法

        参数说明:host:MySQL服务器地址
                          user:用户名
                          password:MySQL登录密码
                          port:MySQL服务器端口号
                          db:需要连接的数据库名
        通常服务器地址、用户名、端口号都是上述的默认值

二、创建表

        连接完数据库后,我们需要使用db.cursor()获取数据库的操作游标

cur=db.cursor()

        接着使用execute()语句即可执行SQL语句.我们以创建学生成绩表来进行演示:

import pymysql
	db=pymysql.connect(host='localhost',user='root',password='123456',port=3	306,db='work1')
	cur=db.cursor() ##获取游标
	sql='create table grade(id varchar(10),name varchar(10),age int,score int,class varchar(10))'
	cur.execute(sql)

        打开Navicat查看表的情况如下:

Python操控mysql批量插入数据的实现方法

        学生成绩表创建成功!

三、批量插入数据

        创建完表后,接下来就是插入数据…而插入数据又可以分为两种方式:按行插入和一次性,我们将依次介绍。

按行插入

id=['101','102','103','104','105','106','107','108','109','110']
	name=['诸葛亮','刘备','周瑜','张飞','关羽','吕布','貂蝉','黄忠','马超','典韦']
	age=[28,30,27,26,28,28,24,26,23,18]
	score=[89,56,78,60,40,33,90,95,86,82]
	class_=['一班','一班','一班','二班','二班','二班','三班','三班','三班','三班']
	sql='insert into grade values(%s,%s,%s,%s,%s)'
	for i in range(0,len(id)):
	  cur.execute(sql,(id[i],name[i],age[i],score[i],class_[i]))
	db.commit()  #一定要提交数据!!不然在数据库中是没有数据显示的

一次性插入

data=((id[i],name[i],age[i],score[i],class_[i]) for i in range(0,len(id)))
	sql='insert into grade values(%s,%s,%s,%s,%s)'
	cur.executemany(sql,data)
	db.commit()

插入数据后,表grade内容如下:

Python操控mysql批量插入数据的实现方法

四、更多

        根据以上步骤,我们可知只要在execute语句中放入相应的SQL语句,即可实现对数据库的各种操作。而在pymysql中实现查询数据操作后,还需通过对游标对象使用.fetchall()方法来返回查询结果。

查询目标:筛选出各班的平均分并以降序进行排列

sql='select class,avg(score) from grade group by class order by avg(score) desc'
	cur.execute(sql)
	rst=cur.fetchall()
	print(rst)

Python操控mysql批量插入数据的实现方法

从输出结果可知,元素是以tuple的方式进行储存的。我们可以转为更多规范的格式查看:

import pandas as pd
	df=pd.DataFrame(list(rst),columns=['班级','平均分'])
	df

Python操控mysql批量插入数据的实现方法

完成各项操作后,不要忘记断开与数据库的连接:

db.close()

以上就是本次分享的全部内容~

附录:python MySQL 批量插入

在现实生活中,经常会使用到Python 将信息清洗完后插入数据库,但一条条插入势必速度效率跟不上,此时将需要使用批量插入的思维。

# coding:utf-8
import pymysql
 
# 打开数据库连接
db = pymysql.connect(host='localhost', port=3306,
           user='username', passwd='password', db='database_name', charset='utf8')
 
# 使用cursor()方法获取操作游标
cursor = db.cursor()
 
# SQL 插入语句
sql = "INSERT INTO EMPLOYEE(FIRST_NAME, AGE, SEX) VALUES (%s,%s,%s)"
# 一个tuple或者list
T = (('xiaoming', 31, 'boy'), ('hong', 22, 'girl'), ('wang', 90, 'man'))
 
try:
  # 执行sql语句
  cursor.executemany(sql, T)
  # 提交到数据库执行
  db.commit()
except :
  # 如果发生错误则回滚
  db.rollback()
# 关闭游标
cursor.close()
# 关闭数据库连接
db.close()

到此这篇关于Python操控mysql批量插入数据的实现方法的文章就介绍到这了,更多相关Python mysql批量插入数据内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
pygame播放音乐的方法
May 19 Python
快速实现基于Python的微信聊天机器人示例代码
Mar 03 Python
Python操作MongoDB数据库的方法示例
Jan 04 Python
Python叠加两幅栅格图像的实现方法
Jul 05 Python
python3实现mysql导出excel的方法
Jul 31 Python
Python 使用threading+Queue实现线程池示例
Dec 21 Python
Python:type、object、class与内置类型实例
Dec 25 Python
Python面向对象封装操作案例详解 II
Jan 02 Python
django model通过字典更新数据实例
Apr 01 Python
pyCharm 实现关闭代码检查
Jun 09 Python
python3 实现mysql数据库连接池的示例代码
Apr 17 Python
python实现简单区块链结构
Apr 25 Python
python 对一幅灰度图像进行直方图均衡化
Oct 27 #Python
Pycharm操作Git及GitHub的步骤详解
Oct 27 #Python
python 爬虫如何正确的使用cookie
Oct 27 #Python
python+requests实现接口测试的完整步骤
Oct 27 #Python
python设置中文界面实例方法
Oct 27 #Python
使用python-cv2实现Harr+Adaboost人脸识别的示例
Oct 27 #Python
基于python实现坦克大战游戏
Oct 27 #Python
You might like
亚洲咖啡有什么?亚洲咖啡产地介绍 亚洲咖啡有什么特点?
2021/03/05 新手入门
PHP中文件缓存转内存缓存的方法
2011/12/06 PHP
PDO::prepare讲解
2019/01/29 PHP
php使用redis的有序集合zset实现延迟队列应用示例
2020/02/20 PHP
js取得url地址参数实例
2013/02/22 Javascript
用表格输出1-1000之间的数字实现代码(附特效)
2013/04/21 Javascript
jQuery性能优化的38个建议
2014/03/04 Javascript
浅谈js中test()函数在正则中的使用
2016/08/19 Javascript
微信小程序 实现拖拽事件监听实例详解
2016/11/16 Javascript
JS实现的集合去重,交集,并集,差集功能示例
2018/03/13 Javascript
浅谈Angularjs中不同类型的双向数据绑定
2018/07/16 Javascript
浅谈vue项目打包优化策略
2018/09/29 Javascript
vue项目打包之后背景样式丢失的解决方案
2019/01/17 Javascript
JavaScript中的ES6 Proxy的具体使用
2019/06/16 Javascript
JavaScript ES 模块的使用
2020/11/12 Javascript
python模块之StringIO使用示例
2015/04/08 Python
理解生产者消费者模型及在Python编程中的运用实例
2016/06/26 Python
git进行版本控制心得详谈
2017/12/10 Python
python遍历文件夹找出文件夹后缀为py的文件方法
2018/10/21 Python
Python2与Python3的区别实例总结
2019/04/17 Python
Flask框架请求钩子与request请求对象用法实例分析
2019/11/07 Python
python给图像加上mask,并提取mask区域实例
2020/01/19 Python
Python tkinter之ComboBox(下拉框)的使用简介
2021/02/05 Python
怎样让char类型的东西转换成int类型
2013/12/09 面试题
教师旷工检讨书
2014/01/18 职场文书
党务公开方案
2014/05/06 职场文书
机关保密承诺书
2014/06/03 职场文书
模范教师材料大全
2014/12/16 职场文书
中班下学期个人总结
2015/02/12 职场文书
2015年销售员工作总结范文
2015/04/07 职场文书
2015年关爱留守儿童工作总结
2015/05/22 职场文书
生产设备维护保养制度
2015/08/06 职场文书
《画家和牧童》教学反思
2016/02/17 职场文书
什么是求职信?求职信应包含哪些内容?
2019/08/14 职场文书
创业计划书之网吧
2019/10/10 职场文书
Python集合的基础操作
2021/11/01 Python