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使用paramiko模块实现ssh远程登陆上传文件并执行
Jan 27 Python
Python中的Numpy入门教程
Apr 26 Python
python django 访问静态文件出现404或500错误
Jan 20 Python
多个应用共存的Django配置方法
May 30 Python
python求最大连续子数组的和
Jul 07 Python
Linux系统(CentOS)下python2.7.10安装
Sep 26 Python
python 文件查找及内容匹配方法
Oct 25 Python
PyQt5根据控件Id获取控件对象的方法
Jun 25 Python
树莓派4B+opencv4+python 打开摄像头的实现方法
Oct 18 Python
Python栈的实现方法示例【列表、单链表】
Feb 22 Python
python实现文法左递归的消除方法
May 22 Python
Django如何批量创建Model
Sep 01 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 魔术函数使用说明
2010/05/14 PHP
php查询相似度最高的字符串的方法
2015/03/12 PHP
nginx+thinkphp下解决不支持pathinfo模式
2015/07/01 PHP
浅析Yii2 GridView实现下拉搜索教程
2016/04/22 PHP
PHP+mysql+ajax轻量级聊天室实现方法详解
2016/10/17 PHP
php实现映射操作实例详解
2019/10/02 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
2019/11/23 PHP
javascript面向对象之Javascript 继承
2010/05/04 Javascript
基于JQuery的asp.net树实现代码
2010/11/30 Javascript
js window.onload 加载多个函数和追加函数详解
2014/01/08 Javascript
JavaScript使用replace函数替换字符串的方法
2015/04/06 Javascript
JavaScript将字符串转换为整数的方法
2015/04/14 Javascript
JS函数多个参数默认值指定方法分析
2016/11/28 Javascript
详解js数组的完全随机排列算法
2016/12/16 Javascript
vue2.0实战之使用vue-cli搭建项目(2)
2017/03/27 Javascript
AngularJs实现聊天列表实时刷新功能
2017/06/15 Javascript
JavaScript 中的 this 简单规则
2017/09/19 Javascript
微信小程序中吸底按钮适配iPhone X方案
2017/11/29 Javascript
javaScript动态添加Li元素的实例
2018/02/24 Javascript
vue和webpack项目构建过程常用的npm命令详解
2018/06/15 Javascript
Vue中img的src是动态渲染时不显示的解决
2019/11/14 Javascript
[07:20]2014DOTA2西雅图国际邀请赛 选手讲解积分赛第二天
2014/07/11 DOTA
[00:13]天涯墨客二技能展示
2018/08/25 DOTA
Python文件读取的3种方法及路径转义
2015/06/21 Python
浅析Python中signal包的使用
2015/11/13 Python
Python排序搜索基本算法之堆排序实例详解
2017/12/08 Python
使用apidoc管理RESTful风格Flask项目接口文档方法
2018/02/07 Python
Python 处理文件的几种方式
2019/08/23 Python
Pycharm最常用的快捷键及使用技巧
2020/03/05 Python
新西兰杂志订阅:isubscribe
2019/08/26 全球购物
国际政治个人自荐信范文
2013/11/26 职场文书
单位工程竣工验收方案
2014/03/16 职场文书
欢迎领导检查标语
2014/06/27 职场文书
2014年个人年终总结
2015/03/09 职场文书
中学生国庆节演讲稿2015
2015/07/30 职场文书
小喇叭开始广播了! 四十多年前珍贵老照片
2022/05/09 无线电