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

  

  

做一个决定,并不难,难的是付诸行动,并且坚持到底。
原文地址:https://www.cnblogs.com/wukc/p/14889279.html