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 编码处理-str与Unicode的区别
Sep 06 Python
Python+Selenium自动化实现分页(pagination)处理
Mar 31 Python
python用户管理系统
Mar 13 Python
对Python中plt的画图函数详解
Nov 07 Python
python爬虫获取百度首页内容教学
Dec 23 Python
Django框架实现分页显示内容的方法详解
May 10 Python
python实现百度OCR图片识别过程解析
Jan 17 Python
tensorflow之变量初始化(tf.Variable)使用详解
Feb 06 Python
Python打包模块wheel的使用方法与将python包发布到PyPI的方法详解
Feb 12 Python
python中如何打包用户自定义模块
Sep 23 Python
详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
Jan 24 Python
Python使用psutil库对系统数据进行采集监控的方法
Aug 23 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中使用Oracle数据库(4)
2006/10/09 PHP
PHP解决URL中文GBK乱码问题的两种方法
2014/06/03 PHP
PHP使用GIFEncoder类处理gif图片实例
2014/07/01 PHP
php的ddos攻击解决方法
2015/01/08 PHP
PHP使用JSON和将json还原成数组
2015/02/12 PHP
通过chrome浏览器控制台(Console)进行PHP Debug的方法
2016/10/19 PHP
php使用PDO获取结果集的方法
2017/02/16 PHP
Thinkphp5框架实现获取数据库数据到视图的方法
2019/08/14 PHP
PHP常见的序列化与反序列化操作实例分析
2019/10/28 PHP
新浪的图片新闻效果
2007/01/13 Javascript
jquery multiSelect 多选下拉框
2010/07/09 Javascript
js动态调用css属性的小规律及实例说明
2013/12/28 Javascript
Javascript中数组sort和reverse用法分析
2014/12/30 Javascript
jQuery制作简单柱状图实例
2015/01/28 Javascript
js变形金刚文字特效代码分享
2015/08/20 Javascript
每天一篇javascript学习小结(Boolean对象)
2015/11/12 Javascript
js严格模式总结(分享)
2016/08/22 Javascript
vue2.0实现导航菜单切换效果
2017/05/08 Javascript
深入了解JavaScript代码覆盖
2019/06/13 Javascript
如何实现一个简易版的vuex持久化工具
2019/09/11 Javascript
VUE项目初建和常见问题总结
2019/09/12 Javascript
vue组件入门知识全梳理
2020/09/21 Javascript
python回调函数用法实例分析
2015/05/09 Python
python开发之字符串string操作方法实例详解
2015/11/12 Python
利用python获取Ping结果示例代码
2017/07/06 Python
python 使用poster模块进行http方式的文件传输到服务器的方法
2019/01/15 Python
pyqt5 tablewidget 利用线程动态刷新数据的方法
2019/06/17 Python
TensorFlow实现自定义Op方式
2020/02/04 Python
详解Python 重学requests发起请求的基本方式
2020/02/07 Python
基于html5 canvas做批改作业的小插件
2020/05/20 HTML / CSS
智能家居、吸尘器、滑板车、电动自行车网上购物:Geekmaxi
2021/01/18 全球购物
社区敬老月活动实施方案
2014/02/17 职场文书
养生餐厅创业计划书范文
2014/03/26 职场文书
反腐倡廉警示教育活动总结
2014/05/05 职场文书
2015年教师节感恩寄语
2015/03/23 职场文书
python模块与C和C++动态库相互调用实现过程示例
2021/11/02 Python