zoukankan      html  css  js  c++  java
  • 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、结果显示

      

      

    做一个决定,并不难,难的是付诸行动,并且坚持到底。
  • 相关阅读:
    字符串题表
    插头dp题表
    点分治题表
    Kd-tree题表
    【BZOJ 4605】崂山白花蛇草水 替罪羊树套线段树
    假的kd-tree小结
    【BZOJ 1492】 [NOI2007]货币兑换Cash 斜率优化DP
    CDQZ 2017 游记
    【BZOJ 1146】[CTSC2008]网络管理Network
    联赛之前的题表(已完成)汇总(可能有遗漏)
  • 原文地址:https://www.cnblogs.com/wukc/p/14889279.html
Copyright © 2011-2022 走看看