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、结果显示

做一个决定,并不难,难的是付诸行动,并且坚持到底。

浙公网安备 33010602011771号