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中使用Boolean操作符做真值测试实例
Jan 30 Python
python脚本设置超时机制系统时间的方法
Feb 21 Python
python 调用HBase的简单实例
Dec 18 Python
Python操作Excel之xlsx文件
Mar 24 Python
python 递归遍历文件夹,并打印满足条件的文件路径实例
Aug 30 Python
Windows下Anaconda的安装和简单使用方法
Jan 04 Python
python验证码识别教程之利用滴水算法分割图片
Jun 05 Python
详解python项目实战:模拟登陆CSDN
Apr 04 Python
python中调试或排错的五种方法示例
Sep 12 Python
matplotlib绘制多个子图(subplot)的方法
Dec 03 Python
django queryset 去重 .distinct()说明
May 19 Python
python3 中使用urllib问题以及urllib详解
Aug 03 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
mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
2009/04/24 PHP
PHP屏蔽蜘蛛访问代码及常用搜索引擎的HTTP_USER_AGENT
2013/03/06 PHP
解决phpcms更换javascript的幻灯片代码调用图片问题
2014/12/26 PHP
thinkPHP模板中函数的使用方法示例
2016/11/30 PHP
PHP利用正则表达式将相对路径转成绝对路径的方法示例
2017/02/28 PHP
PHP高精确度运算BC函数库实例详解
2017/08/15 PHP
javascript 表单规则集合对象
2009/07/21 Javascript
JS子父窗口互相操作取值赋值的方法介绍
2013/05/11 Javascript
jquery easyui 结合jsp简单展现table数据示例
2014/04/18 Javascript
js闭包实现按秒计数
2015/04/23 Javascript
js仿淘宝和百度文库的评分功能
2016/05/15 Javascript
JavaScript导航脚本判断当前导航
2016/07/12 Javascript
javascript与jquery动态创建html元素示例
2016/07/25 Javascript
JavaScript从0开始构思表情插件
2016/07/26 Javascript
Angular2  NgModule 模块详解
2016/10/19 Javascript
Bootstrap Modal遮罩弹出层代码分享
2016/11/21 Javascript
js实现省份下拉菜单效果
2017/02/15 Javascript
从零开始学习Node.js系列教程三:图片上传和显示方法示例
2017/04/13 Javascript
js学习总结之DOM2兼容处理重复问题的解决方法
2017/07/27 Javascript
Vue中对比scoped css和css module的区别
2018/05/17 Javascript
详解webpack+ES6+Sass搭建多页面应用
2018/11/05 Javascript
深入浅析Vue中mixin和extend的区别和使用场景
2019/08/01 Javascript
在vue中把含有html标签转为html渲染页面的实例
2019/10/28 Javascript
[02:43]DOTA2英雄基础教程 德鲁伊
2014/01/13 DOTA
Python实现将不规范的英文名字首字母大写
2016/11/15 Python
python对DICOM图像的读取方法详解
2017/07/17 Python
在python中利用KNN实现对iris进行分类的方法
2018/12/11 Python
django做form表单的数据验证过程详解
2019/07/26 Python
Django框架视图函数设计示例
2019/07/29 Python
is_file和file_exists效率比较
2021/03/14 PHP
HTML5为输入框添加语音输入功能的实现方法
2017/02/06 HTML / CSS
美国马匹用品和马钉购物网站:State Line Tack
2018/08/05 全球购物
英国最大的宝石首饰超市:QP Jewellers
2018/09/23 全球购物
美国工业用品采购网站:Zoro.com
2020/10/27 全球购物
简述安装Slackware Linux系统的过程
2012/05/08 面试题
JSF界面控制层技术
2013/06/17 面试题