Python使用pymysql实现MySQL数据库连接、建表与批量数据插入
本文详解如何使用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批量插入相关内容,建议查阅本站过往文章或继续浏览后续系列文章,感谢支持。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









