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、结果显示
做一个决定,并不难,难的是付诸行动,并且坚持到底。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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)