python办公自动化(实现execl导入mysql数据库)

环境:python3、工具PyCharm、依赖包xlrd

a、execl data1.xlsx的内容

 

b、获取execl内容的python文件内容
cat execlproject.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import xlrd
data=xlrd.open_workbook("data1.xlsx") #打开文件
sheet=data.sheet_by_index(0) #获取到工作表
questionList=[] #构建试题列表
 
#试题类
class Question:
    pass
for i in range(sheet.nrows):
    if i > 1:
        obj=Question() #构建试题对象
        obj.id = sheet.cell(i, 0).value
        obj.subject=sheet.cell(i,1).value  #题目
        obj.questionType = sheet.cell(i, 2).value  #题型
        obj.optionA = sheet.cell(i, 3).value  # 选项
        obj.optionB = sheet.cell(i, 4).value  # 选项
        obj.optionC = sheet.cell(i, 5).value  # 选项
        obj.optionD = sheet.cell(i, 6).value  # 选项
        obj.score = sheet.cell(i, 7).value  # 分数
        obj.answer = sheet.cell(i, 8).value  # 答案
        questionList.append(obj) #将值传入obj
print(questionList)
 
#导入mysql
from mycqconn import *
op_mysql = OperationMysql()
sql="insert into question() values(%s,%s,%s,%s,%s,%s,%s,%s,%s)"
val=[] #空列表来存储元组,利用for循环将数据写入到val中
for i in questionList:
    val.append((i.id,i.subject,i.questionType,i.optionA,i.optionB,i.optionC,i.optionD,i.score,i.answer))
#print(val) #输出元祖数据
op_mysql.insert_many(sql,val)  #调用mysql的插入多条数据插入到库
c、mysql连接方法类
cat mycqconn.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# coding=utf-8
# connect_db:连接数据库,并操作数据库
import pymysql
class OperationMysql:
    def __init__(self):
        # 创建一个连接数据库的对象
        self.conn = pymysql.connect(
            host='100.98.100.186'# 连接的数据库服务器主机名
            port=3306# 数据库端口号
            user='root'# 数据库登录用户名
            passwd='passwd',
            db='test'# 数据库名称
            charset='utf8'# 连接编码
            cursorclass=pymysql.cursors.DictCursor
        )
        # 使用cursor()方法创建一个游标对象,用于操作数据库
        self.cur = self.conn.cursor()
 
    # 查询一条数据
    def search_one(self, sql):
        self.cur.execute(sql)
        result = self.cur.fetchone()  # 使用 fetchone()方法获取单条数据.只显示一行结果
        #result = self.cur.fetchall()  # 显示所有结果
        return result
 
    # 更新SQL
    def updata_one(self, sql):
        try:
            self.cur.execute(sql)  # 执行sql
            self.conn.commit()  # 增删改操作完数据库后,需要执行提交操作
        except:
            # 发生错误时回滚
            self.conn.rollback()
        self.conn.close()  # 记得关闭数据库连接
 
    # 插入SQL
    def insert_one(self, sql):
        try:
            self.cur.execute(sql)  # 执行sql
            self.conn.commit()  # 增删改操作完数据库后,需要执行提交操作
        except:
            # 发生错误时回滚
            self.conn.rollback()
        self.conn.close()
    # 插入多条SQL,和一个元祖
    def insert_many(self, sql,vals):
        try:
            self.cur.executemany(sql, vals)  # 执行sql
            self.conn.commit()  # 增删改操作完数据库后,需要执行提交操作
        except:
            # 发生错误时回滚
            self.conn.rollback()
        self.conn.close()
 
    # 删除sql
    def delete_one(self, sql):
        try:
            self.cur.execute(sql)  # 执行sql
            self.conn.commit()  # 增删改操作完数据库后,需要执行提交操作
        except:
            # 发生错误时回滚
            self.conn.rollback()
        self.conn.close()
d、结果显示

 

 

  

  

 

posted @   苍茫宇宙  阅读(203)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示