Python使用pymysql实现MySQL数据库连接、建表与批量数据插入

程一诺
程一诺
发布时间:2026-10-14 | 3人浏览过
原创

本文详解如何使用Python的pymysql模块连接MySQL数据库,包括建立连接、获取游标、创建数据表以及执行SQL语句。重点演示了按行插入与一次性批量插入两种数据写入方式,并介绍了查询结果的处理及数据库连接的断开方法,帮助开发者高效完成数据库交互任务。

Python连接MySQL数据库基础

在Python开发中,借助pymysql模块编写简短脚本,即可便捷地对MySQL数据库进行控制与管理。

一、连接数据库

实现数据库连接主要使用pymysql.connect函数。

其基本语法结构为:db=pymysql.connect(host='localhost',user='root',port=3306,password='Your password',db='database_name')

参数说明如下:host指定MySQL服务器地址;user为登录用户名;password对应MySQL登录密码;port为服务器端口号;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查看表结构,结果如下:

学生成绩表已成功创建。

数据插入策略:按行与批量

三、批量插入数据

表结构创建完毕后,即可进行数据插入操作。数据插入主要包含两种模式:按行逐条插入与一次性批量插入,下文将分别介绍。

按行插入方式


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表的内容状态如下:

数据查询与结果处理

四、更多操作

基于上述步骤,只要在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)

从输出结果可见,数据元素以tuple(元组)形式存储。为便于查看,可将其转换为更规范的格式:


import pandas as pd
	df=pd.DataFrame(list(rst),columns=['班级','平均分'])
	df

完成所有数据库操作后,务必记得断开与数据库的连接。


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 相关产品和应用

全部下载

专题列表