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 相关文章推荐
TensorFlow实现创建分类器
Feb 06 Python
python最长回文串算法
Jun 04 Python
python实现朴素贝叶斯算法
Nov 19 Python
python 实现交换两个列表元素的位置示例
Jun 26 Python
Python容器使用的5个技巧和2个误区总结
Sep 26 Python
Python实现栈的方法详解【基于数组和单链表两种方法】
Feb 22 Python
python GUI库图形界面开发之PyQt5选项卡控件QTabWidget详细使用方法与实例
Mar 01 Python
python deque模块简单使用代码实例
Mar 12 Python
vscode写python时的代码错误提醒和自动格式化的方法
May 07 Python
python批量合成bilibili的m4s缓存文件为MP4格式 ver2.5
Dec 01 Python
python Autopep8实现按PEP8风格自动排版Python代码
Mar 02 Python
Python实现灰色关联分析与结果可视化的详细代码
Mar 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
php使用session二维数组实例
2014/11/06 PHP
php抽象类用法实例分析
2015/07/07 PHP
jscript之List Excel Color Values
2007/06/13 Javascript
checkbox 多选框 联动实现代码
2008/10/22 Javascript
javascript对象之内置对象Math使用方法
2010/04/16 Javascript
让人期待的2011年度最佳 jQuery 插件分享
2012/03/16 Javascript
Javascript基础知识(一)核心基础语法与事件模型
2014/09/29 Javascript
JQuery右键菜单插件ContextMenu使用指南
2014/12/19 Javascript
js获取json元素数量的方法
2015/01/27 Javascript
jQuery树形下拉菜单特效代码分享
2015/08/15 Javascript
jQuery实现的图片轮播效果完整示例
2016/09/12 Javascript
bootstrap响应式表格实例详解
2017/05/15 Javascript
你可能不知道的JSON.stringify()详解
2017/08/17 Javascript
AngularJS实现图片上传和预览功能的方法分析
2017/11/08 Javascript
解决Linux无法正常安装与卸载Node.js的方法
2018/01/19 Javascript
详解webpack-dev-middleware 源码解读
2020/03/23 Javascript
Vue使用富文本编辑器Vue-Quill-Editor(含图片自定义上传服务、清除复制粘贴样式等)
2020/05/15 Javascript
Python实现扫描指定目录下的子目录及文件的方法
2014/07/16 Python
python解决网站的反爬虫策略总结
2016/10/26 Python
Python多线程实现同步的四种方式
2017/05/02 Python
使用Python向DataFrame中指定位置添加一列或多列的方法
2019/01/29 Python
使用Python做定时任务及时了解互联网动态
2019/05/15 Python
python爬虫爬取幽默笑话网站
2019/10/24 Python
python 监测内存和cpu的使用率实例
2019/11/28 Python
Python切割图片成九宫格的示例代码
2020/03/10 Python
Python运算符+与+=的方法实例
2021/02/18 Python
css3遮罩层镂空效果的多种实现方法
2020/05/11 HTML / CSS
html5 canvas绘制网络字体的常用方法
2019/08/26 HTML / CSS
为有想象力的人提供的生活方式商店:Firebox
2018/06/04 全球购物
TOWER London官网:鞋子、靴子、运动鞋等
2019/07/14 全球购物
教师自我鉴定
2013/12/13 职场文书
工地安全检查制度
2014/02/04 职场文书
学生党员的自我评价范文
2014/03/01 职场文书
团委书记的竞聘演讲稿
2014/04/24 职场文书
写字楼租赁意向书
2014/07/30 职场文书
浅谈:电影《孔子》观后感(范文)
2019/10/14 职场文书