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列出目录下指定文件与子目录的方法
Jul 03 Python
python 2.6.6升级到python 2.7.x版本的方法
Oct 09 Python
Python模拟用户登录验证
Sep 11 Python
TensorFlow的权值更新方法
Jun 14 Python
python基础学习之如何对元组各个元素进行命名详解
Jul 12 Python
Python多进程方式抓取基金网站内容的方法分析
Jun 03 Python
对python中UDP,socket的使用详解
Aug 22 Python
Pyecharts绘制全球流向图的示例代码
Jan 08 Python
Python 实现打印单词的菱形字符图案
Apr 12 Python
python实现简易版学生成绩管理系统
Jun 22 Python
Python初学者必备的文件读写指南
Jun 23 Python
python_tkinter事件类型详情
Mar 20 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中的命名空间详细介绍
2015/07/02 PHP
php微信公众号开发之欢迎老朋友
2018/10/20 PHP
laravel框架上传图片实现实时预览功能
2019/10/14 PHP
js随机颜色代码的多种实现方式
2013/04/23 Javascript
IE下写xml文件的两种方式(fso/saveAs)
2013/08/05 Javascript
JQ获取动态加载的图片大小的正确方法分享
2013/11/08 Javascript
javascript操作html控件实例(javascript添加html)
2013/12/02 Javascript
Js+Jq获取URL参数的集中方法示例代码
2014/05/20 Javascript
javascript 面向对象封装与继承
2014/11/27 Javascript
使用jQuery管理选择结果
2015/01/20 Javascript
值得分享的Bootstrap Ace模板实现菜单和Tab页效果
2015/12/30 Javascript
jqueryMobile使用示例分享
2016/01/12 Javascript
jquery根据一个值来选中select下的option实例代码
2016/08/29 Javascript
深入学习Bootstrap表单
2016/12/13 Javascript
Bootstrap的modal拖动效果
2016/12/25 Javascript
jquery+ajax实现省市区三级联动 (封装和不封装两种方式)
2017/05/15 jQuery
vue-cli中的webpack配置详解
2017/09/25 Javascript
微信小程序下拉刷新界面的实现
2017/09/28 Javascript
vue 使用自定义指令实现表单校验的方法
2018/08/28 Javascript
详解Vue项目中出现Loading chunk {n} failed问题的解决方法
2018/09/14 Javascript
Vue刷新修改页面中数据的方法
2018/09/16 Javascript
如何在node环境实现“get数据解析”代码实例
2020/07/03 Javascript
使用python编写批量卸载手机中安装的android应用脚本
2014/07/21 Python
Zabbix实现微信报警功能
2016/10/09 Python
Python使用pymongo库操作MongoDB数据库的方法实例
2019/02/22 Python
python如何调用字典的key
2020/05/25 Python
Interrail法国:乘火车探索欧洲,最受欢迎的欧洲铁路通票
2019/08/27 全球购物
北京RT科技有限公司.net工程师面试题
2013/02/15 面试题
如何将一个描述日期或日期/时间的字符串转换为一个Date对象
2015/10/13 面试题
公务员政审个人鉴定
2014/02/25 职场文书
施工安全责任书范本
2014/07/24 职场文书
储备店长岗位职责
2015/04/14 职场文书
严以用权学习心得体会
2016/01/12 职场文书
幼儿教师继续教育培训心得体会
2016/01/19 职场文书
MySQL去除密码登录告警的方法
2022/04/20 MySQL
详解如何使用Nginx解决跨域问题
2022/05/06 Servers