excel学习库

excel表格_excel函数公式大全_execl从入门到精通

pandas操作excel导入MySQL数据库

使用Pandas读取Excel中数据,根据Excel名称在MySQL中创造指定结构的数据表,最后将数据插入到对应数据表中

本文以某平台酒店id为例,将不同城市Excel中的酒店id导入MySQL中对应的城市酒店表中

一、连接MySQL数据库

# 填写必要的参数——>host:数据库地址,默认写本地localhost,user:用户名,password:密码,db:连接的数据库名,port端口:3306db = pymysql.connect(host="localhost", user="root", password="***", db="***", port=3306)# 创建一个游标对象cur = db.cursor()

path = r"****"fileList = os.listdir(path=path)for filename in fileList:    if '.xlsx' in filename:        df = read_excel(os.path.join(path,filename),usecols=['酒店id'])        # 错误值处理        df = df.dropna()

# 将酒店与城市名拼接 结果如 酒店-上海name = '酒店-' + filename.replace('酒店id.xlsx','')print(name)# 先执行删除语句:如果存在该表则删除。cur.execute("drop table if exists `{}`".format(name))# 执行sql语句:创建表名为name的数据表cur.execute("CREATE TABLE `{}`(`酒店id` int(0) NOT NULL)".format(name)# 插入语句query = """insert into `{}` (`酒店id`) values (%s)""".format(name)

四、遍历插入

        for i in range(len(df)):            id = df['酒店id'].iloc[i]            cur.execute(query,id)

五、完整代码

import osfrom pandas import read_excelimport pymysql# 填写必要的参数——>host:数据库地址,默认写本地localhost,user:用户名,password:密码,db:连接的数据库名,port端口:3306db = pymysql.connect(host="localhost", user="root", password="***", db="***", port=3306)# 创建一个游标对象cur = db.cursor()# 设置文件读取路径path = r"***"fileList = os.listdir(path=path)for filename in fileList:    if '.xlsx' in filename:        # print(filename)        name = '酒店-' + filename.replace('酒店id.xlsx','')        print(name)        # 先执行删除语句:如果存在该表则删除。        cur.execute("drop table if exists `{}`".format(name))        # 执行sql语句:创建表名为name的数据表        cur.execute(            "CREATE TABLE `{}`(`酒店id` int(0) NOT NULL,`酒店名称` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,`品牌` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,`档次` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,`省份` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,`城市` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,`商圈` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,`地址` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,`经度` decimal(10, 7) NULL DEFAULT NULL,`纬度` decimal(10, 7) NULL DEFAULT NULL,`房间数` int(0) NULL DEFAULT NULL,`开业时间` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,`装修时间` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,`简介` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL,`评分` float(5, 1) NULL DEFAULT NULL,`房型数` int(0) NULL DEFAULT NULL,`电话` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,`房型详情` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL,PRIMARY KEY (`酒店id`) USING BTREE)ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;".format(                name)        )        # 插入语句        query = """insert into `{}` (`酒店id`) values (%s)""".format(name)        # 读取Excel保存为Df对象        df = read_excel(os.path.join(path,filename),usecols=['酒店id'])        # 错误值处理        df = df.dropna()        # 遍历插入        for i in range(len(df)):            id = df['酒店id'].iloc[i]            cur.execute(query,id)    # 提交事务    db.commit()# 关闭连接cur.close()db.close()

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
      友情链接