四时宝库

程序员的知识宝库

Python实战:一步一步开发一个具备通用Excel数据导入功能

引言

数据导入功能在实际开发过程中非常常见。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技术的实用信息。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接