基于tornado python pandas和bootstrap上传组件的mongodb数据添加工具
总体思路:基于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数据添加工具的更多相关文章
- Burp Post、Get数据包转为上传multipart/form-data格式数据包
方法一: 新建一个网页进行上传,代码代码如下: <html> <head></head> <body> <form method="po ...
- python 全栈开发,Day75(Django与Ajax,文件上传,ajax发送json数据,基于Ajax的文件上传,SweetAlert插件)
昨日内容回顾 基于对象的跨表查询 正向查询:关联属性在A表中,所以A对象找关联B表数据,正向查询 反向查询:关联属性在A表中,所以B对象找A对象,反向查询 一对多: 按字段:xx book ----- ...
- Python 基于Python实现Ftp文件上传,下载
基于Python实现Ftp文件上传,下载 by:授客 QQ:1033553122 测试环境: Ftp客户端:Windows平台 Ftp服务器:Linux平台 Python版本:Python 2.7 ...
- Python开发篇——基于React-Dropzone开发上传组件
这次我要讲述的是在React-Flask框架上开发上传组件的技巧.我目前主要以React开发前端,在这个过程中认识到了许多有趣的前端UI框架--React-Bootstrap.Ant Design.M ...
- Django与Ajax,文件上传,ajax发送json数据,基于Ajax的文件上传,SweetAlert插件
一.Django与Ajax AJAX准备知识:JSON 什么是 JSON ? JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻 ...
- JS组件系列——Bootstrap文件上传组件:bootstrap fileinput
前言:之前的三篇介绍了下bootstrap table的一些常见用法,发现博主对这种扁平化的风格有点着迷了.前两天做一个excel导入的功能,前端使用原始的input type='file'这种标签, ...
- Resumable.js – 基于 HTML5 File API 的文件上传
Resumable.js 是一个 JavaScript 库,通过 HTML5 文件 API 提供,稳定和可恢复的批量上传功能.在上传大文件的时候通过每个文件分割成小块,每块在上传失败的时候,上传会不断 ...
- Bootstrap文件上传组件
前言:之前的三篇介绍了下bootstrap table的一些常见用法,发现博主对这种扁平化的风格有点着迷了.前两天做一个excel导入的功能,前端使用原始的input type='file'这种标签, ...
- 金山云 KS3 Python SDK 多线程并发上传文件;下载断点续传 参考脚本
并发上传 基于py自带模块 concurrent.futures import ThreadPoolExecutor #!/usr/bin/env python3 # -*- coding:utf-8 ...
随机推荐
- PJzhang:QQ输入法用户许可协议和隐私政策阅读
猫宁!!! 参考链接:http://qq.pinyin.cn/ 中国用户量最大的输入法是搜狗输入法,百度输入法也有上亿的用户量. 我下载了7个输入法,查看他们的用户许可协议和隐私政策情况.这里说的都是 ...
- vim编辑器详解(week1_day3)
vi编辑器 作用:编辑文本文件中的内容的工具 命令历史 末行模式中,以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令. 启动vim 在命令行窗口中 ...
- Django2.2 会话技术cookie session token的区别以及实例介绍
一.区别: 本人见解:使用自定义数据项进行加密,作为唯一身份识别,登陆时写入cookie(session基于这个).在显示相关数据 1.cookie 属于客户端会话技术(数据存储在客户端) 默认的Co ...
- [c++] 链表各类操作详解
链表概述 链表是一种常见的重要的数据结构.它是动态地进行存储分配的一种结构.它可以根据需要开辟内存单元.链表有一个“头指针”变量,以head表示,它存放一个地址.该地址指向一个元素.链表中每一个元素称 ...
- 【3.2】【mysql基本实验】mysql GTID复制(基于空数据的配置)
概述:本质上和传统异步复制没什么区别,就是加了GTID参数. 且可以用传统的方式来配置主从,也可以用GTID的方式来自动配置主从. 这里使用GTID的方式来自动适配主从. 需要mysql5.6.5以上 ...
- Postgresql 监控sql之 pg_stat_statements模块
postgresql.confpg_stat_statements.max = 1000000pg_stat_statements.track = allpg_stat_statements.trac ...
- java-selenium三种等待方式
方式1: 线程等待:Thread.sleep(xxxx) 只要在case中加入sleep就会强制等待设置的时间后才会执行之后的命令,这种等待一般适用于调试脚本的时候. java代码 //等待3秒 Th ...
- 使用Visual Studio 2019--调试汇编32位代码的详细步骤
声明:本文使用32位masm,代码与16位,64位不同 ------------------------------------------------------------------------ ...
- 实现一台Linux电脑连接另一台Linux(SSH实现linux之间的免密码登陆)
怎么实现一台Linux电脑连接另一台Linux电脑? 首先查看是否安装ssh服务:systemctl status sshd.service 启动服务:systemctl start sshd.ser ...
- java实现的LinkedLilst
package javabean.adt.List; import java.util.ConcurrentModificationException; import java.util.Iterat ...