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 相关文章推荐
python多进程操作实例
Nov 21 Python
基于scrapy实现的简单蜘蛛采集程序
Apr 17 Python
详解Python开发中如何使用Hook技巧
Nov 01 Python
python面向对象多线程爬虫爬取搜狐页面的实例代码
May 31 Python
python实现简易数码时钟
Feb 19 Python
python ChainMap 合并字典的实现步骤
Jun 11 Python
ubuntu 16.04下python版本切换的方法
Jun 14 Python
Python实现将蓝底照片转化为白底照片功能完整实例
Dec 13 Python
python实现指定ip端口扫描方式
Dec 17 Python
Python 实现判断图片格式并转换,将转换的图像存到生成的文件夹中
Jan 13 Python
Python使用graphviz画流程图过程解析
Mar 31 Python
Python 解析库json及jsonpath pickle的实现
Aug 17 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
PHP Zip压缩 在线对文件进行压缩的函数
2010/05/26 PHP
php中var_export与var_dump的区别分析
2010/08/21 PHP
一个严格的PHP Session会话超时时间设置方法
2014/06/10 PHP
win10环境PHP 7 安装配置【教程】
2016/05/09 PHP
javascript实现文字图片上下滚动的具体实例
2013/06/28 Javascript
javascript中typeof的使用示例
2013/12/19 Javascript
用jquery模仿的a的title属性的例子
2014/10/22 Javascript
基于Bootstrap的后台管理面板 Bootstrap Metro Dashboard
2016/06/17 Javascript
学习Angularjs分页指令
2016/07/01 Javascript
jQuery文字提示与图片提示效果实现方法
2016/07/04 Javascript
使用nodejs下载风景壁纸
2017/02/05 NodeJs
Bootstrap3下拉菜单的实现
2017/02/22 Javascript
Angular1.x自定义指令实例详解
2017/03/01 Javascript
div中文字内容溢出常见的解决方法
2017/03/16 Javascript
jQuery 添加样式属性的优先级别方法(推荐)
2017/06/08 jQuery
利用canvas中toDataURL()将图片转为dataURL(base64)的方法详解
2017/11/20 Javascript
Vuex mutitons和actions初使用详解
2019/03/04 Javascript
vue 实现input表单元素的disabled示例
2019/10/28 Javascript
在Python中利用Pandas库处理大数据的简单介绍
2015/04/07 Python
Python实现树莓派WiFi断线自动重连的实例代码
2017/03/16 Python
pandas中的series数据类型详解
2019/07/06 Python
Python根据服务获取端口号的方法
2019/09/25 Python
pytorch进行上采样的种类实例
2020/02/18 Python
Python读入mnist二进制图像文件并显示实例
2020/04/24 Python
详解Python+Selenium+ChromeDriver的配置和问题解决
2021/01/19 Python
Currentbody澳大利亚:美容仪专家
2019/11/11 全球购物
期末自我鉴定
2014/02/02 职场文书
同学会主持词
2014/03/18 职场文书
教师民族团结演讲稿
2014/08/27 职场文书
小学生清明节演讲稿
2014/09/05 职场文书
高中生自我评价范文2015
2015/03/03 职场文书
办公室年度工作总结2015
2015/05/21 职场文书
2016年党员读书月活动总结
2016/04/06 职场文书
PySwarms(Python粒子群优化工具包)的使用:GlobalBestPSO例子解析
2021/04/05 Python
Python Parser的用法
2021/05/12 Python
sql注入教程之类型以及提交注入
2021/08/02 MySQL