欢迎关注 『Python之pymysql库学习』 系列,持续更新中
欢迎关注 『Python之pymysql库学习』 系列,持续更新中
数据仅供学习使用,不可商用。
【所用到的测试数据来自七麦数据的2021年12月移动应用增长榜 - 游戏】
取得了前20名的游戏的相关数据。
下载数据集
链接: https://pan.baidu.com/s/1ezbvTRXB4A2nwVoEO_1PBA?pwd=xq5q
提取码: xq5q 复
原来是建好数据库和数据表的空表(下文提供相关sql语句)
插入数据后
数据库建表语句(主键版本,只可以导入数据一次)
create database mobile_game default character set utf8mb4;
use mobile_game;
CREATE TABLE tb_game (
rank_id INT(10) UNSIGNED auto_increment COMMENT 'rank_id',
app_id VARCHAR ( 25 ) NOT NULL COMMENT '应用id',
app_NAME VARCHAR ( 25 ) NOT NULL COMMENT '应用名称',
class VARCHAR ( 25 ) NOT NULL COMMENT '应用',
Company_NAME VARCHAR ( 25 ) NOT NULL COMMENT '公司名',
score FLOAT NOT NULL COMMENT '七麦指数',
PRIMARY KEY ( rank_id )
);
数据库建表语句(无主键版本,可以多次导入数据)
create database mobile_game default character set utf8mb4;
use mobile_game;
CREATE TABLE tb_game (
rank_id INT(10) UNSIGNED COMMENT 'rank_id',
app_id VARCHAR ( 25 ) NOT NULL COMMENT '应用id',
app_NAME VARCHAR ( 25 ) NOT NULL COMMENT '应用名称',
class VARCHAR ( 25 ) NOT NULL COMMENT '应用',
Company_NAME VARCHAR ( 25 ) NOT NULL COMMENT '公司名',
score FLOAT NOT NULL COMMENT '七麦指数'
);
## 读取2021年12月移动应用增长榜前20.xlsx的数据
excel_workbook=openpyxl.load_workbook("2021年12月移动应用增长榜前20.xlsx")#创建一个excel工作簿
excel_sheet = excel_workbook.active # 使用默认的sheet表,不新建表,切换当前把数据写入此表
excel_data=[]#所有数据的列表
#从第二行第一列开始取得数据,不需要第一行表头的数据
#注意行列数在openpyxl库中是从0开始计数的,max_row是所有数据的行数20,我们要的是第2行到第21行
for row_id in range(2,excel_sheet.max_row+1):
values=[]#这一行数据的列表
for col_id in range(1,excel_sheet.max_column+1):
values.append(excel_sheet.cell(row_id,col_id).value)
print(values)
excel_data.append(values)#实现的2层的列表嵌套
# print(excel_data)#打印看看读取了什么数据
# 把数据写入数据库
conn = pymysql.connect(
host='localhost',
user='root',
password='root',
database='mobile_game',
port=3306,
autocommit=False,
charset="utf8mb4"
)
try:
with conn.cursor() as cursor:
#cursor.executemany表示批量插入数据,批处理
cursor.executemany(
'insert into tb_game'
'(rank_id,app_id ,app_NAME,class,Company_NAME,score)'
'values'
'(%s,%s,%s,%s,%s,%s)',
excel_data
)
conn.commit()
print("导入成功!")
except pymysql.MySQLError as err: # 捕获异常
print(err) # 如果出现异常,打印错误信息
print("导入失败!")
finally:
conn.close() # 无论如何都要关闭连接,节省资源占用
因为前面设置了主键rank,数据只能导入一次(主键不能重复)你可以删掉原来的数据重新导入,或者一开始就不设置主键。
下载数据集
链接: https://pan.baidu.com/s/1ezbvTRXB4A2nwVoEO_1PBA?pwd=xq5q
提取码: xq5q 复
# @Time : 2022/1/16 12:46
# @Author : 南黎
# @FileName: 9.excel导入数据到数据库.py
import pymysql
import openpyxl # 用户操作excel的库
# 先执行创建数据库和数据表的sql语句,确保已经有了数据库和数据表
# CREATE DATABASE mobile_game DEFAULT CHARACTER SET utf8mb4;
# USE mobile_game;
# CREATE TABLE tb_game (
# rank_id INT ( 10 ) UNSIGNED auto_increment COMMENT 'rank_id',
# app_id VARCHAR ( 25 ) NOT NULL COMMENT '应用id',
# app_NAME VARCHAR ( 25 ) NOT NULL COMMENT '应用名称',
# class VARCHAR ( 25 ) NOT NULL COMMENT '应用类别',
# Company_NAME VARCHAR ( 25 ) NOT NULL COMMENT '公司名',
# score FLOAT NOT NULL COMMENT '七麦指数',
# PRIMARY KEY ( rank_id )
# );
## 读取2021年12月移动应用增长榜前20.xlsx的数据
excel_workbook=openpyxl.load_workbook("2021年12月移动应用增长榜前20.xlsx")#创建一个excel工作簿
excel_sheet = excel_workbook.active # 使用默认的sheet表,不新建表,切换当前把数据写入此表
excel_data=[]#所有数据的列表
#从第二行第一列开始取得数据,不需要第一行表头的数据
#注意行列数在openpyxl库中是从0开始计数的,max_row是所有数据的行数20,我们要的是第2行到第21行
for row_id in range(2,excel_sheet.max_row+1):
values=[]#这一行数据的列表
for col_id in range(1,excel_sheet.max_column+1):
values.append(excel_sheet.cell(row_id,col_id).value)
print(values)
excel_data.append(values)#实现的2层的列表嵌套
# print(excel_data)#打印看看读取了什么数据
# 把数据写入数据库
conn = pymysql.connect(
host='localhost',
user='root',
password='root',
database='mobile_game',
port=3306,
autocommit=False,
charset="utf8mb4"
)
try:
with conn.cursor() as cursor:
#cursor.executemany表示批量插入数据,批处理
cursor.executemany(
'insert into tb_game'
'(rank_id,app_id ,app_NAME,class,Company_NAME,score)'
'values'
'(%s,%s,%s,%s,%s,%s)',
excel_data
)
conn.commit()
print("导入成功!")
except pymysql.MySQLError as err: # 捕获异常
print(err) # 如果出现异常,打印错误信息
print("导入失败!")
finally:
conn.close() # 无论如何都要关闭连接,节省资源占用
大家喜欢的话,给个,点个关注!给大家分享更多有趣好玩的Python知识!
版权声明:
发现你走远了@mzh原创作品,转载必须标注原文链接
Copyright 2022 mzh
Crated:2022-1-15
欢迎关注 『Python之pymysql库学习』 系列,持续更新中
欢迎关注 『Python之pymysql库学习』 系列,持续更新中
【1.创建数据库(保姆级图文+实现代码)】
【2.创建数据表(保姆级图文+实现代码)】
【3.数据表插入单条数据(保姆级图文+实现代码)】
【4.数据表插入多条数据(保姆级图文+实现代码)】
【5.数据表更新(保姆级图文+实现代码)】
【6.数据库删除操作(保姆级图文+实现代码)】
【7.数据表查询操作(保姆级图文+实现代码)】
【8.数据库导出数据为excel文件(保姆级图文+实现代码)】
【9.excel导入数据到数据库(保姆级图文+实现代码)】
【数据库创建-数据表增删改查-数据表导出为excel-excel导入数据到数据库-专栏合集(实现代码注释详细)】
【一、分析fetchone()、fetchmany()、fetchall()(保姆级图文+实现代码)】
【二.游标cursor的相关知识(保姆级图文+实现代码)】
【三.sql语句的相关知识(保姆级图文+实现代码)】
【更多内容敬请期待】