Python 利用pandas和mysql-connector获取Excel数据写入到MySQL数据库
如何将Excel数据插入到MySQL数据库中
在实际应用中,我们可能需要将Excel表格中的数据导入到MySQL数据库中,以便于进行进一步的数据分析和处理。本文将介绍如何使用Python将Excel表格中的数据插入到MySQL数据库中。
导入必要的库
首先,我们需要导入pandas库和MySQL Connector/Python库,以便于读取Excel文件和连接MySQL数据库。
import pandas as pd # 导入pandas库,用于读取Excel文件和处理数据 import mysql.connector # 导入MySQL Connector/Python库,用于连接MySQL数据库
连接数据库
接下来,我们需要连接MySQL数据库。可以通过MySQL Connector/Python库提供的connect()方法来连接数据库。
# 连接数据库 mydb = mysql.connector.connect( host=host, # 数据库主机地址 user=user, # 数据库用户名 password=password, # 数据库密码 database=database # 数据库名称 )
其中,host、user、password和database分别是数据库主机地址、数据库用户名、数据库密码和数据库名称,需要根据实际情况进行修改。
创建游标对象
连接成功后,我们需要创建游标对象。可以通过MySQL Connector/Python库提供的cursor()方法来创建游标对象。
# 创建游标对象 mycursor = mydb.cursor()
读取Excel文件
接下来,我们需要读取Excel文件中的数据。可以使用pandas库提供的read_excel()方法来读取Excel文件。
# 读取Excel文件 df = pd.read_excel(filename)
其中,filename是Excel文件的路径,需要根据实际情况进行修改。
将日期时间类型的列转换为字符串类型
在将数据插入到MySQL数据库中之前,我们需要将日期时间类型的列转换为字符串类型。可以通过遍历DataFrame中的每一列,并判断该列的数据类型是否为日期时间类型,然后将该列的数据类型转换为字符串类型。
# 将日期时间类型的列转换为字符串类型 for col in df.columns: # 遍历DataFrame中的每一列 if df[col].dtype == 'datetime64[ns]': # 如果该列的数据类型是日期时间类型 df[col] = df[col].astype(str) # 将该列的数据类型转换为字符串类型
遍历Excel表格中的每一行,并将每一行插入到数据库中
接下来,我们需要遍历Excel表格中的每一行,并将每一行插入到数据库中。可以使用pandas库提供的itertuples()方法来遍历DataFrame中的每一行,并使用MySQL Connector/Python库提供的execute()方法来执行SQL插入语句。
# 遍历Excel表格中的每一行,并将每一行插入到数据库中 for row in df.itertuples(index=False): # 遍历DataFrame中的每一行 sql = f"INSERT INTO {table} (id, 姓名, 国家, 出生日期) VALUES (%s, %s, %s, %s)" # SQL插入语句 val = row # 插入的数据 mycursor.execute(sql, val) # 执行SQL插入语句 print("正在插入数据:", val) # 输出正在插入的数据
其中,table是数据库表名,需要根据实际情况进行修改。
提交更改并关闭数据库连接
最后,我们需要提交更改并关闭数据库连接。可以使用MySQL Connector/Python库提供的commit()方法来提交更改,并使用close()方法来关闭游标对象和数据库连接。
# 提交更改并关闭数据库连接 mydb.commit() # 提交更改 mycursor.close() # 关闭游标对象 mydb.close() # 关闭数据库连接
完整代码如下:
import pandas as pd # 导入pandas库,用于读取Excel文件和处理数据 import mysql.connector # 导入MySQL Connector/Python库,用于连接MySQL数据库 def insert_excel_data_to_mysql(filename, host, user, password, database, table): # 连接数据库 mydb = mysql.connector.connect( host=host, # 数据库主机地址 user=user, # 数据库用户名 password=password, # 数据库密码 database=database # 数据库名称 ) # 创建游标对象 mycursor = mydb.cursor() # 读取Excel文件 df = pd.read_excel(filename) # 将日期时间类型的列转换为字符串类型 for col in df.columns: # 遍历DataFrame中的每一列 if df[col].dtype == 'datetime64[ns]': # 如果该列的数据类型是日期时间类型 df[col] = df[col].astype(str) # 将该列的数据类型转换为字符串类型 # 遍历Excel表格中的每一行,并将每一行插入到数据库中 for row in df.itertuples(index=False): # 遍历DataFrame中的每一行 sql = f"INSERT INTO {table} (id, 姓名, 国家, 出生日期) VALUES (%s, %s, %s, %s)" # SQL插入语句 val = row # 插入的数据 mycursor.execute(sql, val) # 执行SQL插入语句 print("正在插入数据:", val) # 输出正在插入的数据 # 提交更改并关闭数据库连接 mydb.commit() # 提交更改 mycursor.close() # 关闭游标对象 mydb.close() # 关闭数据库连接 # 使用示例 filename = r'C:\\Users\\Admin\\Desktop\\重新开始\\Python操作MySQL数据库\\sheet1.xlsx' # Excel文件路径 host = "localhost" # 数据库主机地址 user = "root" # 数据库用户名 password = "123456" # 数据库密码 database = "caiwu" # 数据库名称 table = "yonghu" # 数据库表名 insert_excel_data_to_mysql(filename, host, user, password, database, table) # 调用函数,将Excel数据插入到MySQL数据库中
到此这篇关于Python 利用pandas和mysql-connector获取Excel数据写入到MySQL数据库的文章就介绍到这了,更多相关Python获取Excel数据写入到MySQL数据库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Android+OpenCv4实现边缘检测及轮廓绘制出图像最大边缘
最近工作需求,需要用opencv来先做一个demo,扫描照片进行边缘检测和最大边缘,就整理出来介绍一下,感兴趣的小伙伴们可以参考一下2021-05-05
最新评论