python办公自动化(实现execl导入mysql数据库)
环境:python3、工具PyCharm、依赖包xlrd
a、execl data1.xlsx的内容
b、获取execl内容的python文件内容
cat execlproject.py
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
# 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、结果显示
做一个决定,并不难,难的是付诸行动,并且坚持到底。