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生成验证码实例
Aug 21 Python
Python下载指定页面上图片的方法
May 12 Python
Python当中的array数组对象实例详解
Jun 12 Python
pandas条件组合筛选和按范围筛选的示例代码
Aug 26 Python
Django shell调试models输出的SQL语句方法
Aug 29 Python
python操作gitlab API过程解析
Dec 27 Python
Python 读取xml数据,cv2裁剪图片实例
Mar 10 Python
tensorflow之读取jpg图像长和宽实例
Jun 18 Python
PyQt 如何创建自定义QWidget
Mar 24 Python
python 机器学习的标准化、归一化、正则化、离散化和白化
Apr 16 Python
Python一行代码实现自动发邮件功能
May 30 Python
Django与数据库交互的实现
Jun 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
解析PHP跨站刷票的实现代码
2013/06/18 PHP
php的ajax简单实例
2014/02/27 PHP
Nigma vs Liquid BO3 第二场2.14
2021/03/10 DOTA
jQuery Select(单选) 模拟插件 V1.3.62 改进版
2010/07/17 Javascript
网站页面自动跳转实现方法PHP、JSP(上)
2010/08/01 Javascript
js使浏览器窗口最大化实现代码(适用于IE)
2013/08/07 Javascript
Javascript实现计算个人所得税
2015/05/10 Javascript
Bootstrap3制作图片轮播效果
2016/05/12 Javascript
AngularJS动态生成div的ID源码解析
2016/08/29 Javascript
关于js函数解释(包括内嵌,对象等)
2016/11/20 Javascript
canvas实现图像布局填充功能
2017/02/06 Javascript
微信小程序网络请求的封装与填坑之路
2017/04/01 Javascript
JS实现快速比较两个字符串中包含有相同数字的方法
2017/09/11 Javascript
Angular使用过滤器uppercase/lowercase实现字母大小写转换功能示例
2018/03/27 Javascript
详解vue-router导航守卫
2019/01/19 Javascript
写给新手同学的vuex快速上手指北小结
2020/04/14 Javascript
[53:03]Optic vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python中zip和unzip数据的方法
2015/05/27 Python
Python数据分析之双色球中蓝红球分析统计示例
2018/02/03 Python
Django 实现下载文件功能的示例
2018/03/06 Python
python实现时间o(1)的最小栈的实例代码
2018/07/23 Python
Python Pandas批量读取csv文件到dataframe的方法
2018/10/08 Python
python简易实现任意位数的水仙花实例
2018/11/13 Python
基于keras 模型、结构、权重保存的实现
2020/01/24 Python
利用Python脚本实现自动刷网课
2020/02/03 Python
python3将变量输入的简单实例
2020/08/19 Python
python 通过pip freeze、dowload打离线包及自动安装的过程详解(适用于保密的离线环境
2020/12/14 Python
Grow Gorgeous美国官网:只要八天,体验唤醒毛囊后新生的茂密秀发
2018/06/04 全球购物
馥蕾诗美国官网:Fresh美国
2019/10/09 全球购物
平面网站制作专科生的自我评价分享
2013/12/11 职场文书
会计电算化大学生职业规划书
2014/02/05 职场文书
2014道德模范事迹材料
2014/02/16 职场文书
离职证明范本
2015/06/12 职场文书
python中os.path.join()函数实例用法
2021/05/26 Python
详解JAVA的控制语句
2021/11/11 Java/Android
SQL Server中T-SQL标识符介绍与无排序生成序号的方法
2022/05/25 SQL Server