Django开发之ORM批量操作
2024-09-07 05:49:50
版本
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
未完待续...
最新文章
- malloc/free和new/delete的区别
- iScroll相关
- SSR分子标记
- strcpy()、memcpy()、memmove()、memset()的内部实现
- tcp/ip通信传输流
- vue源码学习-vnode的挂载和更新流程
- MySql全文索引
- js 中数字与字符串之间的转换
- [精华][推荐]CAS SSO 单点登录框架学习 环境搭建
- python中基本类型的连接组合和互相转换
- 【Beta阶段】第十次Scrum Meeting!!!
- sql2008升级到r2提示:检查当前是否正确配置了报表服务器、数据库服务器是否正在运行以及您是否有权访问
- (Nginx反向代理+NFS共享网页根目录)自动部署及可用性检测
- springboot自定义静态文件目录,解决jar打包后修改页面等静态文件的问题
- gitlab迁移
- FILTER——JAVA
- Linux System V Semaphore semget多进程同时创建缺陷解决方法
- AspNet Core 发布到Linux系统和发布IIS 注意项
- 安装matplotlib 和Pygal
- Struts2 学习笔记 09 访问Web元素