引言
数据导入功能在实际开发过程中非常常见。Python以其丰富的库支持和强大的数据处理能力,在此场景下展现出卓越的优势。本文将详细介绍如何开发一个通用的导入功能,利用pandas读取Excel数据,并通过mysql-connector-python库将其写入MySQL数据库。
一、准备工作
首先确保已安装以下库:
pip install pandas openpyxl mysql-connector-python
二、使用pandas读取Excel数据
import pandas as pd
# 读取Excel文件并转换为DataFrame对象
df = pd.read_excel('input.xlsx')
# 查看数据前几行以确认读取正确
print(df.head())
三、连接MySQL数据库并导入数据
import mysql.connector
# 连接MySQL数据库
cnx = mysql.connector.connect(
host="host",
user="user",
password="password",
database="database"
)
# 创建游标对象
cursor = cnx.cursor()
# 定义表结构(假设与Excel表格列名一致)
table_schema = """
CREATE TABLE IF NOT EXISTS demo1 (
Name VARCHAR(100),
Age INT,
City VARCHAR(100)
)
"""
# 创建表
cursor.execute(table_schema)
# 将DataFrame数据插入数据库
for _, row in df.iterrows():
# 构建INSERT语句及参数列表
column_names = ', '.join(row.index)
placeholders = ', '.join(['%s'] * len(row))
insert_query = f"INSERT INTO demo1 ({column_names}) VALUES ({placeholders})"
cursor.execute(insert_query, tuple(row))
# 提交事务
cnx.commit()
# 关闭游标和连接
cursor.close()
cnx.close()
我们可以将上述过程封装成一个函数,该函数接受数据库连接参数、表名和DataFrame作为输入,并自动处理创建表和插入数据的过程:
def importdata(host, user, password, db_name, table_name, data_frame):
# 连接数据库
cnx = mysql.connector.connect(
host=host,
user=user,
password=password,
database=db_name
)
cursor = cnx.cursor()
# 创建表
columns = ', '.join(data_frame.columns.tolist())
create_table_sql = f"CREATE TABLE IF NOT EXISTS {table_name} ({columns})"
cursor.execute(create_table_sql)
# 插入数据
for _, row in data_frame.iterrows():
placeholders = ', '.join(['%s'] * len(row))
insert_query = f"INSERT INTO {table_name} VALUES ({placeholders})"
cursor.execute(insert_query, tuple(row))
# 提交事务
cnx.commit()
# 关闭连接和游标
cursor.close()
cnx.close()
# 使用示例:
importdata('localhost', 'username', 'password', 'my_database', 'my_table', df)
结语
通过上述代码,我们成功实现了将Excel数据导入MySQL数据库的功能,并简单封装了一个导入函数。在实际应用时,可以根据具体需求调整表结构以及数据预处理逻辑,确保数据类型匹配且无冲突。此外,对于大数据量的导入操作,可以考虑采用批处理方式提高导入效率,同时注意异常处理,确保数据安全性和完整性。
关注小编,获取更多有关Python和AI技术的实用信息。