为了账号安全,请及时绑定邮箱和手机立即绑定

python中使用flask,有一个页面是使用xlrd解析一个8万条excel的数据超时,有什么办法不超时?

python中使用flask,有一个页面是使用xlrd解析一个8万条excel的数据超时,有什么办法不超时?

holdtom 2019-02-17 04:31:36
python中使用flask,有一个页面是使用xlrd解析一个8万条excel的数据超时,有什么办法不超时?代码如下 @app.route('/import') def import_xlsx(): # 连接数据库 conn = pymysql.connect(host='192.168.10.2', port=3306, user='project', passwd='123456', db='project') # db:库名 # 使用cursor()方法获取操作游标 cursor = conn.cursor() cursor.execute("truncate table project_info") conn.commit() cursor.execute("select * from project_attach_files where type=1"); result_one = cursor.fetchone() print("导入文件") print(result_one[2]) try: ExcelFile = xlrd.open_workbook(r'.' + result_one[2]) except Exception as e: print(e) # print(ExcelFile.sheet_names()) sheet = ExcelFile.sheet_by_index(0) # print(sheet.nrows) print(sheet.nrows); cursor.execute("update project_attach_files set rows=" + str(sheet.nrows) + " where type=1"); conn.commit() for i in range(sheet.nrows): # print(sheet.row_values(i)) data = sheet.row_values(i) # print(i) # print(data[1]) # 从第四行开始读取 if (i >= 5): # sql_insert = 'insert into project_info(data_15,data_103,data_106) values(%s,%s,%s)',(data[4],data[6],data[7]) # print(sql_insert) # 建设类型是"新建"丶主动规划的取交付验收时间 其他的取内验完成时间 if data[14] == '新建' or data[14] == '主动规划': data[133] = data[136] # 投资总计(元) 兼容没有金额的情况 if (data[102] == ''): data[102] = 0 # 项目名称 if (data[106] == ''): data[106] = "" # 项目编码 if (data[107] == ''): data[107] = "" # 设计投资金额 if (data[102] == ''): data[102] = 0 # 内部验收结束时间 if (data[134] == ''): data[134] = '1970-01-01' # 项目转资投资合计 if (data[150] == ''): data[150] = '0' # 项目状态 if (data[164] == ''): data[164] = "" # data_15 建设方式 14 # data_103 投资总计 102 # data_106 项目名称 106 # data_108 项目编码 107 # data_114 设计投资金额(元) 102 # data_134 内部验收结束时间 134 # data_150 项目转资投资合计 150 # data_170 项目状态 164 sql = '''insert into project_info(data_15,data_103,data_106,data_108,data_114,data_134,data_150,data_170) values("%s","%s","%s","%s","%s","%s","%s","%s")''' % ( data[14], data[102], data[105], data[107], data[102], data[134], data[150], data[164]) cursor.execute(sql) conn.commit() return render_template('index.html', result_one=result_one[2]) 希望大佬给个处理的思路或者解决不超时的办法而可以顺利解析,谢谢
查看完整描述

3 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

你说的超时应该是指http超过,一种是在你的http服务器设置延长http超时的时间,另一种是把import_xlsx做为异请求,开了个子进程去处理

查看完整回答
反对 回复 2019-03-01
?
达令说

TA贡献1821条经验 获得超6个赞

处理excel之后用新的pymysql连接查询数据库

查看完整回答
反对 回复 2019-03-01
?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

一次插入一行。。。这效率不行

查看完整回答
反对 回复 2019-03-01
  • 3 回答
  • 0 关注
  • 1430 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号