zoukankan      html  css  js  c++  java
  • python读取excel保存到mysql

    首先安装xlrd模块:pip install xlrd ,核心代码网上有很多,这里主要是关于一些个人实际碰到问题细节的处理

    1、excel数据不规范导致读取的数据存在空白行和列;

    2、参数化执行sql

    代码如下,仅供参考:

     1 import xlrd
     2 
     3 import AppSetting.AppConfig as config
     4 import AppSetting.dbConfig as db
     5 
     6 # 处理excel依赖xlrd模块 pip install xlrd
     7 
     8 # 读取excel文件
     9 excel_data = xlrd.open_workbook(config.file_path)
    10 # 获取第一个sheet页
    11 sheet = excel_data.sheet_by_index(0)
    12 # 总行数
    13 rows = sheet.nrows
    14 # 获取列(经常读取到的excel可能存在空白行或者空白列,这里根据第一行的数据获取要导入的数据的列数)
    15 rowlsts = [i for i in sheet.row_values(0) if i != '']
    16 cursor = db.connect.cursor()
    17 # 定义变量n,当n=0 时组装参数化的sql
    18 n = 0
    19 sql = ""
    20 # 由于excel中第一行存储的是字段名,获取数据从第二行开始
    21 for i in range(1, rows):
    22     try:
    23         item = sheet.row_values(i)[:len(rowlsts)]
    24         data = ''
    25         # 组装参数化sql,通过拼接%s得到占位符
    26         for j in range(0, len(rowlsts)):
    27             data += "%s,"
    28         data = data.rstrip(',')
    29         if n == 0:
    30             sql = "insert into co_zfxx(%s) values( %s )" % (str.join(',', rowlsts), data)
    31             cursor.execute(sql, tuple(item))
    32         else:
    33             cursor.execute(sql, tuple(item))
    34 
    35     except Exception as ex:
    36         print(ex)
    37 
    38     finally:
    39         n += 1
    40 
    41 db.connect.commit()
    42 cursor.close()
    43 db.connect.close()

    本次测试执行5w条数据(26个字段),执行时间22s

    有道无术,术尚可求,有术无道,止于术
  • 相关阅读:
    GEF: 图形拖拽处理
    【矩阵快速幂】bzoj1297 [SCOI2009]迷路
    【扩展欧几里得】NOIP2012同余方程
    【高精度乘法】NOIP2003麦森数
    【数论·错位排列】bzoj4517 排列计数
    【数论】Lucas
    【NOIP2012】疫情传递
    【NOIP2012】旅行计划
    【Manacher算法】求最长回文串的优秀算法
    【Tarjan】洛谷P3379 Tarjan求LCA
  • 原文地址:https://www.cnblogs.com/qinaqina/p/11610277.html
Copyright © 2011-2022 走看看