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. redis.conf配置项说明

    #是否以后台进程运行,默认为no,如果需要以后台进程运行则改为yes daemonize no #如果以后台进程运行的话,就需要指定pid,你可以在此自定义redis.pid文件的位置. pidfil ...

  2. python网络编程——网络IO模型

    1 网络IO模型介绍 服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种:    (1)同步阻塞IO(Blocking IO):即传统的IO模型.    (2)同步非阻塞IO(Non-bl ...

  3. windo form 窗体布局方式

    DataGridView:显示数据表后台数据绑定:List<xxx> list = new List<xxx>();dataGridView1.DataSource = lis ...

  4. 对 Java Integer.valueOf() 的一些了解

    从一道选择题开始 分析 选项A   选项A中比较的是i01和i02,Integer i01=59这里涉及到自动装箱过程,59是整型常量,经包装使其产生一个引用并存在栈中指向这个整型常量所占的内存,这时 ...

  5. react下将输入的汉字转化为拼音

    1.首先需要一个简单的拼音和汉字对应的字典文件: /** * 收录常用汉字6763个,不支持声调,支持多音字,并按照汉字使用频率由低到高排序 */ var pinyin_dict_notone = { ...

  6. java springboot整合zookeeper入门教程(增删改查)

    java springboot整合zookeeper增删改查入门教程 zookeeper的安装与集群搭建参考:https://www.cnblogs.com/zwcry/p/10272506.html ...

  7. 【Head First Servlets and JSP】笔记23:Expression Language(EL) 完全攻略

    基本上是<Head First Servlets and JSP>内容的整理.扩充.顺便推荐一个供参考的JSP教程:JSP Tutorial内容很全面,还有一些有趣的实例. 完整代码参考 ...

  8. 20165101刘天野 2018-2019-2《网络对抗技术》第1周 Kali的安装

    20165101刘天野 2018-2019-2<网络对抗技术>第1周 Kali的安装 一.实验要求 Kali下载 安装 网络 共享 软件源 二.实验步骤 1.下载 从Kali官网中下载相应 ...

  9. MySQL java连接被拒绝:java.sql.SQLException: Access denied for user 'root'@'****' (using password: YES)

    //系统运行出现错误:java.sql.SQLException: Access denied for user 'root'@'***.**.**.**' (using password: YES) ...

  10. 让Tomcat供外网访问

    使用Tomcat+花生壳部署一个Javaweb网站,步骤分为三步. 第一,花生壳配置. 下载花生壳,并默认安装.申请动态域名,激活护照,登录.(都是常规操作,不必多说) 第二,Tomcat设置. 找到 ...