Python 利用pymysql和openpyxl操作MySQL数据库并插入Excel数据
1. 需求分析
本文将介绍如何使用Python连接MySQL数据库,并从Excel文件中读取数据,将其插入到MySQL数据库中。
2. 环境准备
在开始本文之前,请确保您已经安装好了以下环境:
- Python 3.x
- PyMySQL库
- openpyxl库
- MySQL数据库
3. 连接MySQL数据库
我们可以使用pymysql
库来连接MySQL数据库。请先创建一个名为test
的MySQL数据库,并在其中创建一个名为yonghu
的表。
import pymysql # 连接到MySQL数据库 mydb = pymysql.connect( host="localhost", user="root", passwd="123456", db="test" )
在上述代码中,我们调用了pymysql
库中的connect()
函数来连接MySQL数据库。其中,host
参数是MySQL服务器的主机名或IP地址,user
参数是登录MySQL服务器的用户名,passwd
参数是登录MySQL服务器的密码,db
参数是要连接的数据库名。
4. 打开Excel文件
在Python中,可以使用openpyxl
库来读写Excel文件。请先安装好openpyxl
库。
from openpyxl import load_workbook # 打开Excel文件 wb = load_workbook(filename=r'E:\重新开始\Python操作MySQL数据库\sheet1.xlsx') sheet = wb.active
在上述代码中,我们使用load_workbook()
函数加载Excel文件,并使用active
属性获取活动工作表。
5. 获取表头
在插入数据之前,我们需要先获取Excel表格的表头信息。
# 获取表头 header = [cell.value for cell in sheet[1]]
在上述代码中,我们遍历第一行的单元格,获取每个单元格的值,作为表头。
6. 遍历Excel数据并插入数据库
接下来,我们遍历Excel文件中的每一行数据,并将其插入到MySQL数据库中。
# 遍历每一行数据,并将其插入到数据库中 cursor = mydb.cursor() count = 0 for row in sheet.iter_rows(min_row=2, values_only=True): sql = f"INSERT INTO yonghu ({', '.join(header)}) VALUES ({', '.join(['%s'] * len(header))})" cursor.execute(sql, row) count += 1 print(f"正在插入{count}条数据") # 提交更改并关闭数据库连接 mydb.commit() cursor.close() mydb.close()
在上述代码中,我们使用iter_rows()
函数从第二行开始遍历每一行数据。在遍历过程中,我们构建了一个插入数据的SQL语句,使用占位符%s
,然后使用游标对象执行SQL语句,将行数据插入到MySQL数据库中。
最后,我们提交了对数据库的更改,并关闭了游标对象和与MySQL数据库的连接。
7. 完整代码
最终的Python代码如下:
from openpyxl import load_workbook # 导入load_workbook函数,用于加载Excel文件 import pymysql # 导入pymysql库,用于连接和操作MySQL数据库 # 连接到MySQL数据库 mydb = pymysql.connect( host="localhost", user="root", passwd="123456", db="test" ) # 打开Excel文件 wb = load_workbook(filename=r'E:\重新开始\Python操作MySQL数据库\sheet1.xlsx') # 加载Excel文件 sheet = wb.active # 获取活动工作表 # 获取表头 header = [cell.value for cell in sheet[1]] # 获取第一行的单元格值,作为表头 # 遍历每一行数据,并将其插入到数据库中 cursor = mydb.cursor() # 创建游标对象,用于执行SQL语句 count = 0 # 计数器,用于记录插入的数据条数 for row in sheet.iter_rows(min_row=2, values_only=True): # 从第二行开始遍历每一行数据 sql = f"INSERT INTO yonghu ({', '.join(header)}) VALUES ({', '.join(['%s'] * len(header))})" # 构建插入数据的SQL语句,使用占位符%s cursor.execute(sql, row) # 执行SQL语句,将行数据插入到数据库中 count += 1 # 每插入一条数据,计数器加1 print(f"正在插入{count}条数据") # 输出插入的数据条数 # 提交更改并关闭数据库连接 mydb.commit() # 提交对数据库的更改 cursor.close() # 关闭游标对象 mydb.close() # 关闭与数据库的连接
8. 总结
本文介绍了如何使用Python连接MySQL数据库,并从Excel文件中读取数据,将其插入到MySQL数据库中。如果您有任何疑问或建议,请在评论区留言。