1. 老师的增删改查
1. teacher_obj.cid.add(*[1, 2, 3]) 添加(必须打散)
2. teacher_obj.cid.set([1, 2, 3]) 设置(不用打散) 2. 查询练习
1. 单表查询 只在一张表里查各种字段
obj.属性(字段)
2. 一对多(外键)和一对一
正向:
从写外键或一对一的表开始查 叫 正向查
obj.外键(一对一).属性
反向查:
1. 一对多
obj.表名_set
2. 一对一
obj.表名
3. 多对多 正向查:
从写多对多的表开始查 叫 正向查
obj.多对多字段名.all() --> QuerySet()
反向查:
obj.表名_set.all() --> QuerySet() 4. 双下划线 表示跨表查询
正向:
1. 关联的字段名__另外一张表的字段名
反向:
1. 另外一张表的表名__另外一张表的字段名 5. 聚合
aggregate() from django.db.models import Avg, Max, Min, Count, Sum # 求最贵的那本书
models.Book.objects.all().aggregate(max_price=Max("price")) 6. 分组
annotate() # 将所有的书按作者分组,统计每个作者最贵的书
models.Author.objects.all().annotate(author_max=Max("books__price"))
最后得到的是一个QuerySet()对象,里面的每个数据对象都多了一个author_max字段 7. F
查询条件是字段间的比较 查询所有购买数大于收藏数的商品
models.Goods.objects.filter(buy_num__gt=F("keep_num")) 扩展的两个:
1. 将每个商品的购买数+1000
models.Goods.objects.all().update(buy_num=F("buy_num")+1000)
2. 将所有商品的名字前面加上 “特价”
from django.db.models.functions import Concat
from django.db.models import Value models.Goods.objects.filter().update(name=Concat(Value("特价"), F("name"))) 8. Q
相当于取出子集和 Q(条件1) | Q(条件2)
Q(条件1) & Q(条件2)
Q(条件1) & ~Q(条件2) 当Q查询和关键字查询都有的时候,Q查询要写在前面
models.Book.objects.filter(Q(title__contains="物语")|Q(publish_day__year=2017),price__lt=9) 9. 常用字段 10. 字段参数
null
max_length
default
unique
primary_key 时间字段相关:
auto_now_add 创建这条数据时自动加当前时间
auto_now 每一次修改都更新时间 关系字段:
related_name
to
to_field 11. 所有QuerySet方法 1. select_realated(关系字段)
一对一或多对一查询时用这个 2. prefetch_realated()
多对多和一对多时用这个 3. 批量创建 提前把数据对象生成,
data = [obj1, obj2, obj3]
bulk_create(data, 10)
4. 执行额外SQL语句
Entry.objects.extra(select={'new_id': "select col from sometable where othercol > %s"}, select_params=(1,)) 5. 直接执行原生SQL(和pymysql类似)
拿到连接,获取光标,执行SQL语句
from django.db import connection, connections
cursor = connection.cursor() # cursor = connections['default'].cursor()
cursor.execute("""SELECT * from auth_user where id = %s""", [1])
row = cursor.fetchone()

ORM 关键的更多相关文章

  1. day56_9_20orm中的关键字段,orm查询13方法整合,查询优化和事务。

    一.常用字段. 在orm中有一些字段是常用字段: 1.AutoField 这个字段是自增的,必须填入参数primary_key=True,也就是说这个字段是表的主键,如果表类中没有自增列,就会自动创建 ...

  2. 终于等到你:CYQ.Data V5系列 (ORM数据层)最新版本开源了

    前言: 不要问我框架为什么从收费授权转到免费开源,人生没有那么多为什么,这些年我开源的东西并不少,虽然这个是最核心的,看淡了就也没什么了. 群里的网友:太平说: 记得一年前你开源另一个项目的时候我就说 ...

  3. 架构从最简单的数据访问框架(ORM)到资源调度和治理中心(SOA)说起

    随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. 单一应用架构当网站流量很小时,只需一个应用,将 ...

  4. Django ORM、一对一、一对多、多对多、详解

    上篇博客也提到这些知识点,可能大家还是不太清楚,这篇博客为大家详细讲解ORM中的几个知识点 1.1首先我们先看一个小案例: #_*_coding:utf-8_*_ from django.db imp ...

  5. 冰冻三尺非一日之寒-mysql(orm/sqlalchemy)

    第十二章  mysql ORM介绍    2.sqlalchemy基本使用 ORM介绍: orm英文全称object relational mapping,就是对象映射关系程序,简单来说我们类似pyt ...

  6. Rafy 领域实体框架设计 - 重构 ORM 中的 Sql 生成

    前言 Rafy 领域实体框架作为一个使用领域驱动设计作为指导思想的开发框架,必然要处理领域实体到数据库表之间的映射,即包含了 ORM 的功能.由于在 09 年最初设计时,ORM 部分的设计并不是最重要 ...

  7. 自己动手写ORM的感受

    之前看到奋斗前辈和时不我待前辈的自己动手写ORM系列博客,感觉讲解的通俗易懂,清晰透彻.作为一个菜鸟,闲来也想着自己写一个ORM,一来加深自己对 ORM的理解,以求对EF,NHibernate等ROM ...

  8. 吉特仓库管理系统-ORM框架的使用

    最近在园子里面连续看到几篇关于ORM的文章,其中有两个印象比较深刻<<SqliteSugar>>,另外一篇文章是<<我的开发框架之ORM框架>>, 第一 ...

  9. Python开发【十二章】:ORM sqlalchemy

    一.对象映射关系(ORM) orm英文全称object relational mapping,就是对象映射关系程序,简单来说我们类似python这种面向对象的程序来说一切皆对象,但是我们使用的数据库却 ...

随机推荐

  1. cdoj1338郭大侠与英雄学院

    地址:http://acm.uestc.edu.cn/#/problem/show/1338 思路: 郭大侠与英雄学院 Time Limit: 6000/2000MS (Java/Others)    ...

  2. Leaflet API 翻译(二)

    摘自:http://www.ithao123.cn/content-824673.html L.Point 显示以像素为单位的点的x,y坐标. 所以接受点对象的leaflet方法和选项都也接受他们简单 ...

  3. SpringBoot RedisMQ消息队列与发布订阅

    SpringBoot简单整合RedisMQ消息队列和发布订阅 注:RedisMq消息队列使用redis数组实现,leftpush存一,rightpop取一. 1.application.propert ...

  4. make cmake catkin_make

    在Linux下进行C语言编程,必然要采用GNU GCC来编译C源代码生成可执行程序. 一.GCC快速入门 Gcc指令的一般格式为:Gcc [选项] 要编译的文件 [选项] [目标文件] 其中,目标文件 ...

  5. 【hihocoder】01背包

    描述 且说上一周的故事里,小Hi和小Ho费劲心思终于拿到了茫茫多的奖券!而现在,终于到了小Ho领取奖励的时刻了! 小Ho现在手上有M张奖券,而奖品区有N件奖品,分别标号为1到N,其中第i件奖品需要ne ...

  6. HDU4628

    /*状态转移f[i]=min(f[i],f[j]+f[i^j]); 就是j状态+i^j状态=i状态,f[i]记录的是从i删除1要的最小步数*/ #include<string.h> #in ...

  7. Linux7关闭防火墙

    RedHat Enterprise Linux 7关闭防火墙方法 在之前的版本中关闭防火墙等服务的命令是 service iptables stop /etc/init.d/iptables stop ...

  8. [TJOI2010]打扫房间

    题目描述 学校新建了一批宿舍,值日生小A要把所有的空房间都打扫一遍.这些宿舍的布局很奇怪,整个建筑物里所有的房间组成一个N * M的矩阵,每个房间的东南西北四面墙上都有一个门通向隔壁房间.另外有些房间 ...

  9. spring data redis的使用jar包版本冲突问题

    spring data redis 与spring 版本之间会有不兼容,要求spring 最低版本为4.2.6,这里推荐的一个版本 spring 4.3.2  spring data redis 1. ...

  10. cmd下进入oracle sqlplus

    1.sqlplus /nolog 2.connect sys/orcl@ORCL as sysdba 3.select sysdate from dual exit;