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

      

      

    做一个决定,并不难,难的是付诸行动,并且坚持到底。
  • 相关阅读:
    java数据库连接池proxool介绍及mysql8小时断开连接问题的说明
    golang 做了个mutex与atomic性能测试
    Pcre 安装
    go err
    go if switch range
    Nginx 处理Http请求头部流程
    go 指针
    golang struct、interface详解
    go slice详解
    Linux基础
  • 原文地址:https://www.cnblogs.com/wukc/p/14889279.html
Copyright © 2011-2022 走看看