这篇 感觉很实用--DJANGO ORM
django -- 实用 ORM 这篇 感觉
2023-09-27 14:28:45 时间
Django之model F/Q以及多对多操作
使用多对多自动创建后,会创建一张第三张表,三张表中会将操作的前两张表中的ID做对应 在没有做ManyToMany 对应的那张表中,会有一列 xx_set 的数据,其中xx为正向的表名,并且为小写 多对多之查询
Django ORM Model的基本查询操作API 1.创建Model实例对象 阅读文本前请参考此文章的数据表结构 使用save方法创建Model实例: 由于Topic需要一个User对象,所以,先获取username是admin(超级用户)的User对象,再去创建Topic对象
Django ORM 聚合查询和分组查询 对QuerySet计算统计值,需要使用aggregate方法,提供的参数可以是一个或多个聚合函数 Django提供了一系列的聚合函数,其中Avg(平均值)、Count(计数)、Max(最大值)、Min(最小值)、Sum(加和)最为常用 要使用这些聚合函数,需要将它们引入当前的环境中:
Django ORM F对象和Q对象查询 F对象用于操作数据库中某一列的值,它可以在没有实际访问数据库获取数据值的情况下对字段的值进行引用 使用F对象之前需要将它引入当前的环境中:
Django ORM基本应用与原理剖析 1.ORM构建数据表 由于每一个数据表对应一个Model定义,每一个Model都是一个Python类,所以,Model之间是可以继承的。Django规定,所有的Model都必须继承自django.db.models.Model
因为 Django ORM update,我今天差点「从删库到跑路」 经过周末两天回血,今天早早来到公司,准备把上周遗留的 BUG 修了,然后再多写几个 BUG。 还没等我把双肩包放好,就看见群里有同事反馈,有一个表的数据没了。
http://www.cnblogs.com/ccorz/p/5882400.html
model之F/Q操作 F操作,使用查询条件的值打个比方吧,有一张表,保存着公司员工的工资,公司普涨工资,如何在model中操作,这就用到了F,首先需要导入此模块:
from django.db.models import F
操作:
models.UserInfo.objects.filter().update(salary=F(salary)+500)Q操作,构造搜索条件
model中的查询搜索有三种方式:
models.UserInfo.objects.filter(id=3,name=alex)
需要注意的是,传入字典时,字典前面需要加**,标记为字典
dic = {id:123,name:alex} models.UserInfo.objects.filter(**dic)
所以我们可以在在捕捉用户输入后,将输入构造成字典,然后将字典当做参数传入查询.
传Q对象,构造搜索条件首先还是需要导入模块:
from django.db.models import Q传入条件进行查询:
q1 = Q() q1.connector = OR q1.children.append((id, 1)) q1.children.append((id, 2)) q1.children.append((id, 3)) models.Tb1.objects.filter(q1)合并条件进行查询:
con = Q() q1 = Q() q1.connector = OR q1.children.append((id, 1)) q1.children.append((id, 2)) q1.children.append((id, 3)) q2 = Q() q2.connector = OR q2.children.append((status, 在线)) con.add(q1, AND) con.add(q2, AND) models.Tb1.objects.filter(con)model之多对多操作
在数据库表中的对对多,有两种方式:
使用多对多自动创建后,会创建一张第三张表,三张表中会将操作的前两张表中的ID做对应 在没有做ManyToMany 对应的那张表中,会有一列 xx_set 的数据,其中xx为正向的表名,并且为小写 多对多之查询
#正向查询 #获取一个女孩对象 g1 = models.Girl.objects.get(id=1) # g1 = models.Girl.objects.filter(id=1) #获取和当前女孩有关系的所有男孩 g1.b.all() #获取全部 g1.b.filter(name=xxx).count() #获取个数多对多添加
models.Boy.objects.all().values(id,name,girl__name) #注意此处为girl__name,并非girl_set__name.
#正向 g1 = models.Girl.objects.get(id=1) g1.b.add(models.Boy.objects.get(id=1)) g1.b.add(1) #可以直接添加ID号 bs = models.Boy.objects.all() g1.b.add(*bs) #可以添加列表 g1.b.add(*[1,2,3]) #可以添加ID的列表多对多更新
b1 = models.Boy.objects.filter(id=1) b1.girl_set.clear() #清空与boy中id=1 关联的所有数据 ...
关键词:update,与单表操作相同.
多对多操作补充说明其实django中models的操作,也是调用了ORM框架来实现的,pymysql 或者mysqldb,所以我们也可以使用原生的SQL语句来操作数据库:
from django.db import connection cursor = connection.cursor() cursor.execute("""SELECT * from tb where name = %s""", [Lennon]) row = cursor.fetchone()
Django ORM Model的基本查询操作API 1.创建Model实例对象 阅读文本前请参考此文章的数据表结构 使用save方法创建Model实例: 由于Topic需要一个User对象,所以,先获取username是admin(超级用户)的User对象,再去创建Topic对象
Django ORM 聚合查询和分组查询 对QuerySet计算统计值,需要使用aggregate方法,提供的参数可以是一个或多个聚合函数 Django提供了一系列的聚合函数,其中Avg(平均值)、Count(计数)、Max(最大值)、Min(最小值)、Sum(加和)最为常用 要使用这些聚合函数,需要将它们引入当前的环境中:
Django ORM F对象和Q对象查询 F对象用于操作数据库中某一列的值,它可以在没有实际访问数据库获取数据值的情况下对字段的值进行引用 使用F对象之前需要将它引入当前的环境中:
Django ORM基本应用与原理剖析 1.ORM构建数据表 由于每一个数据表对应一个Model定义,每一个Model都是一个Python类,所以,Model之间是可以继承的。Django规定,所有的Model都必须继承自django.db.models.Model
因为 Django ORM update,我今天差点「从删库到跑路」 经过周末两天回血,今天早早来到公司,准备把上周遗留的 BUG 修了,然后再多写几个 BUG。 还没等我把双肩包放好,就看见群里有同事反馈,有一个表的数据没了。
相关文章
- Django中对数据查询、删除、修改
- Django使用Bootstrap的经典方法
- django之创建第7个项目-url配置
- Django的时区问题
- 「基于Django的全民健康智慧中医数字服务平台」后端应用General_Data代码实现(三)
- 「基于Django的全民健康智慧中医数字服务平台」后端应用Users可视化
- 「基于Django的全民健康智慧中医数字服务平台」后端应用系统配置
- 「基于Django的全民健康智慧中医数字服务平台」前端应用User功能(一)
- Django实现logging+Middleware记录服务端API日志
- Django 4.x Models CRUD(增、删、改、查)函数方法
- Django 4.x 快速配置一个 Django Web 项目设置模板
- Django-Web框架之实现登录功能
- Django表单验证
- Django+xadmin打造在线教育平台(二)
- Python学习---Django的request.post源码分析
- Python学习---django模板语法180122
- Python 框架 之 Django 绑定 MySql ,MVT 实现简单一个简单的浏览器(内附详细步骤)
- 启动django应用报错 “Error: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试。”
- 解决 django.db.utils.OperationalError: (1051, "Unknown table 'mydorm.users_studen t'")
- Django学习路28_ .html 文件继承及<block 标签>,include 'xxx.html'
- Django学习路23_if else 语句,if elif else 语句 forloop.first第一个元素 .last最后一个元素,注释
- django--模型字段引用