版本

1 Python 3.8.2
2 Django 3.0.6

批量入库

场景: 前端页面通过 textarea 文本框提交一列多行数据到Django后台,后台通过ORM做入库操作

表名: TableName 字段名: table_column, status, job 等

需要两个“媒介”: 1. 一个列表(用作批量入库的“收纳盒”) 2. 一个方法 bulk_create(批量入库的“武器”)

 ...省略...

 if request.method == 'POST':
datas = request.POST.get('datas')
if datas:
data_to_insert = []
for s in datas.split('\n'):
data_to_insert.append(TableName(table_column=s, status='ok', job='teacher'))
print('start insert...')
TableName.objects.bulk_create(data_to_insert) ...省略...

批量更新

疑问:这是批量更新吗?!

场景:前端提交数据后,Django后台通过ORM实现批量更新

...省略...

if request.method == 'POST':
update_data = request.POST.get('update_data')
for i in json.loads(update_data):
TableName.objects.filter(id=i['']).update(status=i[''], job=i[''], comments=i[''])
...省略...

说明:

request.POST.get('update_data') 中的 update_data 为前端Ajax提交过来的data
批量更新必须使用一个字段作为 filter,然后再去更新。相当于SQL语句中的where
转换为SQL语句: UPDATE TableName SET status = 'x', job = 'y', comments = 'z' WHERE id = 'xx'

聚合分组

场景: 统计每个类型的数量并统计出TOP 5

 ORM
TableName.objects.values('job').annotate(jo=Count('job')).order_by('-jo') MySQL
SELECT job, COUNT(*) as num FROM app1_tablename GROUP BY job ORDER BY num desc

未完待续...

Django开发之ORM批量操作的更多相关文章

  1. UWP开发之ORM实践:如何使用Entity Framework Core做SQLite数据持久层?

    选择SQLite的理由 在做UWP开发的时候我们首选的本地数据库一般都是Sqlite,我以前也不知道为啥?后来仔细研究了一下也是有原因的: 1,微软做的UWP应用大部分也是用Sqlite.或者说是微软 ...

  2. Django开发之html交互

    html中用户输入信息,由Django的view.py处理,大致用到了以下几类格式: 1. 文本框 <input type="text" name="vid&quo ...

  3. django开发之model篇-Field类型讲解

    今天介绍一下django开发中,定义模型时用到的相关字段类型和字段选项. 先说说常用的字段类型:1) AutoField: 自增字段类型,当自定义自增类型的id时,可以使用此类型:2) BigAuto ...

  4. Django开发之module

    1.首先需要安装你要使用的数据的python模块组件 2.需要新建一个app 切换到工程根目录下,然后执行django-admin.py startpapp firstModule 编辑first/s ...

  5. Django开发之Ajax POST提交403报错

    问题现象 Django开发时,前端post提交数据时,由于csrf机制,如果不做处理会报403报错 问题解决 通过在data字段中添加 csrfmiddlewaretoken: '{{ csrf_to ...

  6. Django开发之Ajax 返回内容报错

    预期效果 Django通过Ajax POST提交数据,前台弹窗处理结果 粗略代码 # views.py 代码 ...省略... msg = { 'code': 200, 'message': 'Hel ...

  7. Django开发之Datetime类型JSON序列化时报错

    前提回顾 在进行django开发view视图时,如果数据库字段是 datetime类型,在JSON序列化返回时,会出现异常 异常现象 TypeError: Object of type datetim ...

  8. django 开发之给admin 模块添加富文本编辑器

    第一步下载kindeditor  http://kindeditor.net/demo.php 下载下来后放到静态文件static 下面的js下面 接着在admin 模块文章类下引入这富文本编辑器: ...

  9. JavaEE开发之SpringBoot整合MyBatis以及Thymeleaf模板引擎

    上篇博客我们聊了<JavaEE开发之SpringBoot工程的创建.运行与配置>,从上篇博客的内容我们不难看出SpringBoot的便捷.本篇博客我们继续在上篇博客的基础上来看一下Spri ...

随机推荐

  1. BootstrapDialog.show - 提示信息对话框

    外文资料:http://nakupanda.github.io/bootstrap3-dialog/ (1)最简单的实现方式: BootstrapDialog.show({ message: 'Hi ...

  2. hive如何获取当前时间

    在大多数的sql中获取当前时间都是用now()函数即可,hive获取当前时间的函数与sql 不一样 在impala中执行now()函数时是可以通过的 然而在hive中执行now()函数却报错: hiv ...

  3. Java项目开启远程调试(tomcat、springboot)

    当我们运行一个项目的时候,一般都是在本地进行debug.但是如果是一个分布式的微服务,这时候我们选择远程debug是我们开发的利器. 环境apache-tomcat-8.5.16 Linux 如何启用 ...

  4. (八十九)c#Winform自定义控件-自定义滚动条(treeview、panel、datagridview、listbox、listview、textbox)

    官网 http://www.hzhcontrols.com/ 前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kw ...

  5. Nuxt使用axios跨域问题解决方法

    Nuxt 是 Vue 项目服务器端渲染(SSR)解决方案.而在使用时,就会遇到前后端分离情况下的域名或端口不一致导致的跨域问题.本文将介绍如何通过设置代理解决 Nuxt 与 axios 集成的跨域问题 ...

  6. Meta标签大全_web开发常用meta整理

    meta标签提供关于HTML文档的元数据.元数据不会显示在页面上,但是对于机器是可读的.它可用于浏览器(如何显示内容或重新加载页面),搜索引擎(关键词),或其他 web 服务. 必要属性 属性 值 描 ...

  7. redux中的reducer为什么必须(最好)是纯函数

    为什么reducer最好是纯函数? 首先你得看看文档怎么说reducer的作用的,‘接收旧的 state 和 action,返回新的 state’,他起的是一个对数据做简单处理后返回state的作用. ...

  8. 数据可视化之powerBI入门(五)PowerQuery,支持从多种源导入数据

    PowerBI的强大绝不仅是最后生成炫酷的可视化报告,她在第一步数据获取上就显示出了强大的威力,利用Power Query 的强大数据处理功能,几乎可以从任何来源.任何结构.任何形式上获取数据 htt ...

  9. python 生成器(四):生成器基础(四)标准库中的生成器函数

    os.walk 这个函数在遍历目录树的过程中产出文件名,因此递归搜索文件系统像for 循环那样简单. 用于过滤的生成器函数 模块  函数  说明 itertools  compress(it,sele ...

  10. bzoj2843极地旅行社

    bzoj2843极地旅行社 题意: 一些点,每个点有一个权值.有三种操作:点与点连边,单点修改权值,求两点之间路径上点的权值和(需要判输入是否合法) 题解: 以前一直想不通为什么神犇们的模板中LCT在 ...