基于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 ...
随机推荐
- linux环境jdk+tomcat搭建
一.什么是Linux? 和Windows操作系统软件一样,Linux也是一个操作系统软件.但是和Windows不同的是,Linux是一套开放源代码程序的.并可以自由传播的类Unix操作系统软件(Uni ...
- 手写k-means算法
作为聚类的代表算法,k-means本属于NP难问题,通过迭代优化的方式,可以求解出近似解. 伪代码如下: 1,算法部分 距离采用欧氏距离.参数默认值随意选的. import numpy as np d ...
- Oracle 看出表结构与属性、表空间设计
1.Oracle 查看表空间 SELECT b.comments as 注释, a.column_name as 列名, a.data_type || '(' || a.data_length || ...
- 【Python开发】PyQt5应用与实践
一个典型的GUI应用程序可以抽象为:主界面(菜单栏.工具栏.状态栏.内容区域),二级界面(模态.非模态),信息提示(Tooltip),程序图标等组成.本篇根据作者使用PyQt5编写的一个工具,介绍如何 ...
- Java中的锁-悲观锁、乐观锁,公平锁、非公平锁,互斥锁、读写锁
总览图 如果文中内容有错误,欢迎指出,谢谢. 悲观锁.乐观锁 悲观锁.乐观锁使用场景是针对数据库操作来说的,是一种锁机制. 悲观锁(Pessimistic Lock):顾名思义,就是很悲观,每次去拿数 ...
- Shell初学(七)linux账户管理/群组管理
[1]新建用户 用户相关文件:/etc/passwd /etc/shadow useradd useradd的默认预设 [2]设置密码 passwd 常见修改密码使用技巧: echo "1 ...
- 与高精死杠的几天——记两道简单的高精dp
(同样也是noip往年的题 1.矩阵取数游戏 题目链接[Luogu P1005 矩阵取数游戏] \(\mathcal{SOLUTION}:\) 通过对题目条件的分析,我们可以发现,每一行取数对答案的 ...
- C++练习 | 单向链表类模板(包含类模板中静态变量初始化格式)
#include <iostream> #include <string> using namespace std; template <class T> clas ...
- MyBatis清空数据库表数据
<update id="truncateTable"> truncate table ${tableName} </update> <update i ...
- jinja2 模板相关
安装 pip install jinja2 配置模板 settings.py 60行左右 TEMPLATES = [ { 'BACKEND': 'django.template.backends.dj ...