总体思路:基于bootstrap4的前端页面上传组件,把excel文件上传至服务器,并利用python pandas读取里面的数据形成字典列表

通过pymongo 接口把数据插入或追加到mongodb相关集合中

  • html部分
<input type="file"  id="excelfile" class="form-control">
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="inlineRadioOptions" id="rebuild" value="option1">
<label class="form-check-label" for="rebuild">重建</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="inlineRadioOptions" id="append" value="option2">
<label class="form-check-label" for="append">附加</label>
</div>
........
<button type="button" id="postbtn" class="btn btn-lg btn-block btn-outline-primary">Sign up for free</button>
  • jquery部分:其中24-26行是确保ajax提交成功的关键
 //radio按键,按下和抬起所代表的不同动作
$(".form-check-input").click(function () {
if(typeof($(this).attr("checked"))=="undefined")
{
$(this).attr("checked","checked")
}
else
{
$(this).removeAttr('checked')
}
}); $("#postbtn").click(function () {
//根据选中的radio,执行相应的操作,追加mongodb的数据集或是
//删除重建
var param = $(".form-check-input:checked").attr("id");
//alert("参数"+param);
var dataform = new FormData();
dataform.append('fileobj',$("#excelfile")[].files[]);
dataform.append('status',param);
$.ajax({
url:'/qingxiniaodao',
type:'post',
mimeType:'multipart/form-data',
contentType:false,
processData:false,
data:dataform,
success:function (data) {
console.log(data)
}
})
});
</script>
  • tornado----python部分
class qingxiniaodao(RequestHandler):
def get(self):
self.render('mongowithpanda.html')
def post(self):
if self.request.files:
#第一步上传文件
filename = self.request.files['fileobj'][]['filename']
param =self.get_argument("status")#如果值为rebuild就重建,append为附加
filename =currentpath+"\\temfile\\"+filename
with open(filename,"wb") as writer:
writer.write(self.request.files['fileobj'][]['body'])
#第二步:读取文件生成dataframe
mydataframe = pandas.read_excel(filename)
print(type(mydataframe.to_json(orient='records')))
self.write(json.dumps({"rets": mydataframe.to_json(orient='records')}))
#第三步获取集合名称----默认每个excel文件只有一个sheet
collectioname = pandas.ExcelFile(filename)
#获取sheet名
print(collectioname.sheet_names[])
#mongodb操作:
client = MongoClient("localhost",)
db = client['olddream']
cols = db[collectioname.sheet_names[]]
if(param=="rebuild"):
cols.remove()
title = []
rets = []
superdict = {}
retlist = []
print("这是表头:", mydataframe.columns)
for i in mydataframe.columns:
title.append(i)
# mydataframe.values----结果集ndarray类型
print("算出数据集的行,列数:", mydataframe.values.shape)
rowcount = mydataframe.values.shape[] # ndarray的行数,--元组
i =
print("打印数据集的值:", mydataframe.values)
print("打印数据集的某行某列:", mydataframe.values[][])
k =
for i in range(, rowcount):
for k in range(, len(title)):
superdict[title[k]] = mydataframe.values[i][k]
retlist.append(superdict)
superdict = {}
i +=
self.write(json.dumps({"rets": retlist}))
insertrows=cols.insert_many(retlist)
self.write(json.dumps({"rets":str(insertrows.inserted_ids)}))

基于tornado python pandas和bootstrap上传组件的mongodb数据添加工具的更多相关文章

  1. Burp Post、Get数据包转为上传multipart/form-data格式数据包

    方法一: 新建一个网页进行上传,代码代码如下: <html> <head></head> <body> <form method="po ...

  2. python 全栈开发,Day75(Django与Ajax,文件上传,ajax发送json数据,基于Ajax的文件上传,SweetAlert插件)

    昨日内容回顾 基于对象的跨表查询 正向查询:关联属性在A表中,所以A对象找关联B表数据,正向查询 反向查询:关联属性在A表中,所以B对象找A对象,反向查询 一对多: 按字段:xx book ----- ...

  3. Python 基于Python实现Ftp文件上传,下载

    基于Python实现Ftp文件上传,下载   by:授客 QQ:1033553122 测试环境: Ftp客户端:Windows平台 Ftp服务器:Linux平台 Python版本:Python 2.7 ...

  4. Python开发篇——基于React-Dropzone开发上传组件

    这次我要讲述的是在React-Flask框架上开发上传组件的技巧.我目前主要以React开发前端,在这个过程中认识到了许多有趣的前端UI框架--React-Bootstrap.Ant Design.M ...

  5. Django与Ajax,文件上传,ajax发送json数据,基于Ajax的文件上传,SweetAlert插件

    一.Django与Ajax AJAX准备知识:JSON 什么是 JSON ? JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻 ...

  6. JS组件系列——Bootstrap文件上传组件:bootstrap fileinput

    前言:之前的三篇介绍了下bootstrap table的一些常见用法,发现博主对这种扁平化的风格有点着迷了.前两天做一个excel导入的功能,前端使用原始的input type='file'这种标签, ...

  7. Resumable.js – 基于 HTML5 File API 的文件上传

    Resumable.js 是一个 JavaScript 库,通过 HTML5 文件 API 提供,稳定和可恢复的批量上传功能.在上传大文件的时候通过每个文件分割成小块,每块在上传失败的时候,上传会不断 ...

  8. Bootstrap文件上传组件

    前言:之前的三篇介绍了下bootstrap table的一些常见用法,发现博主对这种扁平化的风格有点着迷了.前两天做一个excel导入的功能,前端使用原始的input type='file'这种标签, ...

  9. 金山云 KS3 Python SDK 多线程并发上传文件;下载断点续传 参考脚本

    并发上传 基于py自带模块 concurrent.futures import ThreadPoolExecutor #!/usr/bin/env python3 # -*- coding:utf-8 ...

随机推荐

  1. HDWIKI6.0后台SQL写shell

  2. 【计算机视觉】论文笔记:Ten years of pedestrian detection, what have we learned?

    最近正在研究行人检测,学习了一篇2014年发表在ECCV上的一篇综述性的文章,是对行人检测过去十年的一个回顾,从dataset,main approaches的角度分析了近10年的40多篇论文提出的方 ...

  3. select poll epoll之间的区别

    1.select poll每次循环调用时都需要将文件描述符和事件拷贝到内核空间,epoll只需要拷贝一次: (这种情况在对于描述符数量不大的情况下还可以,但是当描述符的数量达到十几万甚至上百万的时候, ...

  4. Linux下编程获取本地IP地址的常见方法

    转载于:http://blog.csdn.net/k346k346/article/details/48231933 在进行linux网络编程时,经常用到本机IP地址.本文罗列一下常见方法,以备不时之 ...

  5. PTA(Basic Level)1030.完美数列

    给定一个正整数数列,和正整数 p,设这个数列中的最大值是 M,最小值是 m,如果 M≤*m**p*,则称这个数列是完美数列. 现在给定参数 p 和一些正整数,请你从中选择尽可能多的数构成一个完美数列. ...

  6. springBoot中tomcat默认端口修改

    springboot在启动tomcat的默认端口是8080,在实际开发中,应客户要求必须使用80端口. 研究springboot后发现有两种方式可以实现修改tomcat的端口 第一.直接修改appli ...

  7. Linux在线安装MongoDB

    Mongo官网安装地址: https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/ 以MongoDB3.4为例 1.创建 ...

  8. python-day31(正式学习)

    一.单机架构 应用领域: 植物大战僵尸 office 二.CS架构 应用领域: QQ 大型网络游戏 计算机发展初期用户去取数据,直接就去主机拿,从这里开始就分出了客户端和服务端. 客户端:用户安装的软 ...

  9. Jenkins的安装配置及使用

    一.以Jenkins在tomcat容器里运行的方式,jenkins的安装及安装时所涉及的JDK和tomcat的配置 1.首先下载tomcat, 2.下载Jenkins.war包,将war包放在tomc ...

  10. 右键添加cmd notePad++快捷键

    1.将以下文字复制到txt文本,将txt修改为reg执行后,邮件菜单查. Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directo ...