使用Python导入上千条excel数据到mysql

前言

前几天即将做完一个商业项目,关于教师绩效考核,开发者只有我和我师兄,可谓是困难重重,感觉超出了我和师兄知识范围,不过学到了很多新技术,苦并快乐着

背景

后面新增加了一个蛮复杂的需求,还好有大神师兄带着,我们两解决完成了,然后需要导入几个excel表的教师成果项目,横向项目,纵向项目,论文,著作等等

作为一个程序员小萌新,当然不会采取一条条导入的傻操作啦。

环境及准备

所需库

  1. xlrd (python操作excel库)
  2. PyMysql(python操作mysql库)

安装

若没有的话,安装命令如下

$ pip install xlrd
$ pip install pymysql

分析

需求分析

1. 每个excel表一行一个项目名称

2. 需要导入mysql表project上,有三个字段id(项目id) , name(项目名称),table_id(所属计算模板表外键id)

思路

  1. 首先对每个excel表取出某一行(row),得到每一行数据

  2. 其次连接数据库,进行插入

  3. 由于有上千条数据,希望能够全部一次性全部导入,因此使用mysql事务,当有一条导入不成功进行事务回滚

源码

# Author:Alex Jakin
import xlrd
import pymysql

def main():
    #文件位置

    ExcelFile=xlrd.open_workbook(
        r'xxxx')#你的excel文件路径
    #选择哪个sheet
    sheet=ExcelFile.sheet_by_name('Sheet1')

    #连接数据库
    db = pymysql.connect("", "", "", "")
    # 使用cursor()方法获取操作游标
    cur = db.cursor()
    # 开始导入
    try:
        #循环sheet的每一行
        for i in range(0, sheet.nrows):
            sql_insert = "insert into project(name,table_id) values('{project_name_}',44)".format(project_name_=sheet.row_values(i)[0])
            print(sheet.row_values(i)[0])
            cur.execute(sql_insert)
            # 提交
            db.commit()
        print("共导入{num_}条".format(num_=sheet.nrows))
    except Exception as e:
        # 错误回滚
        db.rollback()
        print(e)
    finally:
        db.close()
if __name__ == '__main__':
    main()

实现导入并不难,主要是新加需求比较复杂,后面有机会我会分享


 上一篇
快速幂取模算法 快速幂取模算法
引言快速幂的目的就是做到快速求幂,假设我们要求a^b,按照朴素算法就是把a连乘b次,这样一来时间复杂度是O(b)也即是O(n)级别,快速幂能做到$O(log_{2}b)$。 题目求a的b次方对p取模的值,其中1<=a,b,p<=
2019-05-03
下一篇 
实战 | 多线程爬取猫眼TOP100榜 实战 | 多线程爬取猫眼TOP100榜
环境1. win10 2. python3 分析源码打开猫眼Top100榜,每一栏电影都有一定规律,以霸王别姬为例分析 <dd> <i class="board-index board-index-1">1</
2019-04-07
  目录