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实现机器学习之kNN算法示例
Mar 01 Python
使用pandas实现csv/excel sheet互相转换的方法
Dec 10 Python
Python增强赋值和共享引用注意事项小结
May 28 Python
numpy数组广播的机制
Jul 12 Python
python提取照片坐标信息的实例代码
Aug 14 Python
在Python3 numpy中mean和average的区别详解
Aug 24 Python
python定义类self用法实例解析
Jan 22 Python
解决pyCharm中 module 调用失败的问题
Feb 12 Python
pycharm 更改创建文件默认路径的操作
Feb 15 Python
Python连接Impala实现步骤解析
Aug 04 Python
python3中celery异步框架简单使用+守护进程方式启动
Jan 20 Python
Python基础数据类型tuple元组的概念与用法
Aug 02 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
微信公众平台网页授权获取用户基本信息中授权回调域名设置的变动
2014/10/21 PHP
php绘图之加载外部图片的方法
2015/01/24 PHP
详解PHP中的mb_detect_encoding函数使用方法
2015/08/18 PHP
php中preg_match的isU代表什么意思
2015/10/01 PHP
php 参数过滤、数据过滤详解
2015/10/26 PHP
php微信公众号js-sdk开发应用
2016/11/28 PHP
jQuery.holdReady()方法用法实例
2014/12/27 Javascript
jQuery DataTables插件自定义Ajax分页实例解析
2020/04/28 Javascript
学习Bootstrap滚动监听 附调用方法
2016/07/02 Javascript
滚动条的监听与内容随着滚动条动态加载的实现
2017/02/08 Javascript
利用 spin.js 生成等待效果(js 等待效果)
2017/06/25 Javascript
NodeJS如何实现同步的方法示例
2018/08/24 NodeJs
利用JS代码自动删除稿件的普通弹幕功能
2019/09/20 Javascript
javascript头像上传代码实例
2019/09/28 Javascript
javascript 设计模式之享元模式原理与应用详解
2020/04/08 Javascript
angular中的post请求处理示例详解
2020/06/30 Javascript
Node在Controller层进行数据校验的过程详解
2020/08/28 Javascript
浅谈nuxtjs校验登录中间件和混入(mixin)
2020/11/06 Javascript
vue图片裁剪插件vue-cropper使用方法详解
2020/12/16 Vue.js
[29:16]完美世界DOTA2联赛决赛日 Inki vs LBZS 第三场 11.08
2020/11/10 DOTA
Python程序设计入门(2)变量类型简介
2014/06/16 Python
python3 pillow生成简单验证码图片的示例
2017/09/19 Python
Python Excel处理库openpyxl使用详解
2019/05/09 Python
使用Python计算玩彩票赢钱概率
2019/06/26 Python
基于django ManyToMany 使用的注意事项详解
2019/08/09 Python
如何关掉pycharm中的python console(图解)
2019/10/31 Python
Django配置文件代码说明
2019/12/04 Python
Python实现桌面翻译工具【新手必学】
2020/02/12 Python
python虚拟环境模块venv使用及示例
2020/03/04 Python
jupyter notebook快速入门及使用详解
2020/11/13 Python
英国袜子店:Sock Shop
2017/01/11 全球购物
英国文具、办公用品和科技商店:Ryman
2018/09/27 全球购物
科颜氏印度官网:Kiehl’s印度
2021/02/20 全球购物
2014年应届大学生自我评价
2014/01/09 职场文书
领导班子党的群众路线对照检查材料
2014/09/25 职场文书
cypress测试本地web应用
2022/06/01 Javascript