关键词:
参考:https://www.cnblogs.com/liwenzhou/p/8660826.html
一 ORM单表操作
1 增删改查
1 1. 查询 2 1. 查所有 3 models.Publisher.objects.all() 4 2. 查某个具体的记录 5 models.Publisher.objects.get(id=1) --> 注意查询条件不成立就报错 6 2. 删除一条记录 7 models.Publisher.objects.get(id=1).delete() 8 3. 创建一条记录 9 models.Publisher.objects.create(name="新出版社名字", addr="出版社地址") 10 4. 修改一条记录 11 obj = models.Publisher.objects.get(id=1) 12 obj.name = "新名字" 13 obj.save()
2 字段和参数:
--1. 字段
1. CharField 字符类型,必须提供max_length
2. AutoField int自增
3. DateField 日期字段
4. DateTimeField() 日期时间字段
5. IntergeField() 整数类型
--2. 参数
1. null=True 可以为空
2. default=默认值
3. unique=True 表示是唯一的
--4. 时间字段
1. auto_now_add=True 创建数据记录的时候会把当前时间添加到数据库
2. auto_add=True 每次更新数据记录的时候会更新该字段。
3 ORM必知必会单表查询13条:
1. all() --> 查询所有结果 2. filter() --> 根据查询条件查询数据库的 3. get() --> 获取一个唯一的值 4. exclude() --> 将符合条件的都剔除掉,留下不符合条件的 5. values(‘字段名‘, ...) --> 返回一个QuerySet,里面是字典 6. values_list(字段名‘, ...) --> 返回一个QuerySet,里面是元祖 7. order_by() --> 对查询结果排序 8. reverse() --> 对一个有序的查询结果集做反转 9. distinct() --> 去重,跨表查询时去掉重复的记录,MySQL不支持按字段去重 10. count() --> 返回数据条数 11. first() --> 取第一个数据 12. last() --> 取最后一条数据 13. exists() --> 判断表里有没有数据
分类:
1. 返回QuerySet列表的有哪一些?
1. all()
2. filter()
3. exclude()
4. order_by()
5. reverse()
6. distinct()
7. values(‘字段名‘, ...) --> 查询结果的列表里,都是字典
8. values_list(字段名‘, ...) --> 查询结果的列表里,都是元祖
2. 返回具体对象的
1. first()
2. last()
3. get()
3. 返回数字的
1. count()
4. 返回布尔值
1. exists()
4 单表查询双下划线操作
例子:
1 models.Tb1.objects.filter(id__lt=10, id__gt=1) # 获取id大于1 且 小于10的值 2 3 models.Tb1.objects.filter(id__in=[11, 22, 33]) # 获取id等于11、22、33的数据 4 models.Tb1.objects.exclude(id__in=[11, 22, 33]) # not in 5 6 models.Tb1.objects.filter(name__contains="ven") # 获取name字段包含"ven"的 7 models.Tb1.objects.filter(name__icontains="ven") # icontains大小写不敏感 8 9 models.Tb1.objects.filter(id__range=[1, 3]) # id范围是1到3的,等价于SQL的bettwen and 10 11 类似的还有:startswith,istartswith, endswith, iendswith 12 13 date字段还可以: 14 models.Class.objects.filter(first_day__year=2017)
5 如何在一个py文件中 使用Django项目的相关配置或内容,比如之间连接djanjo里面的数据库,在新建的py文件里面写上下面这个即可:
import os if __name__ == ‘__main__‘: os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings") import django django.setup() from app01 import models
二 ORM跨表操作
正向查询:
# 查询第一本书关联的出版社的名字 # 1. 基于对象的查询 # book_obj = models.Book.objects.first() # ret = book_obj.publisher.name # print(ret) # 2. 基于queryset的双下划线查询,双下划线表示跨表 # ret = models.Book.objects.all().values_list("publisher__name").distinct() # print(ret)
# 反向查询
# 1. 由出版社反向查询书籍(基于对象的查询) # publisher_obj = models.Publisher.objects.get(id=2) # 找到张江出版社 # 张江出版社出版的所有书籍 # ret = publisher_obj.book_set.all() # print(ret) # 2. 基于queryset的双下划线 # 江出版社出版的所有书籍的书名 ret = models.Publisher.objects.filter(id=2).values_list("book__title") print(ret)
mybatis单表多表查询,动态sql使用(代码片段)
文章目录单表查询操作参数占位符#和$$VS#SQL注入like模糊查询多表查询操作一对一多表查询一对多多表查询动态SQL使用if标签trim标签where标签set标签foreach标签单表查询操作参数占位符#和$#:相当于JDBC里面替换占位符的操作方... 查看详情
06-查询操作(dql)
一.综述 查询操作主要从两个方面来说:单表查询和多表查询。单表查询包括:简单查询、过滤查询、结果查询、分页查询、聚集函数;多表查询包括:笛卡尔积、外键约束、内连接查询、外链接查询、自连接查询。二.... 查看详情
orm单表操作查询多表操作查询及增删改查(代码片段)
------------------------------------------只有对前途乐观的人,才能不怕黑暗,才能有力量去创造光明。乐观不是目的,而是人生旅途中的一种态度。 多表操作创建模型实例:我们来假定下面这些概念,字段和关系作者模型:一个作... 查看详情
django多表操作2(代码片段)
创建表模型和多表操作1一样基于双下划线的一对多查询#查询出版社为北京出版社出版的所有图书的名字,价格ret=Publish.objects.filter(name=‘北京出版社‘).values(‘book__name‘,‘book__price‘)print(ret)ret=Book.objects.filter(publish__name=‘北京... 查看详情
django-orm:单表查询基于对象和双下划线的多表操作集合查询分组查询f查询和q查询(代码片段)
##############################################单表操作##############################################简单查:models.User.objects.filter(id=3)#queryset对象,相当于一个列表,放了一个或多个User对象models.User.objects.filter(id=3).fi 查看详情
07-查询操作(dql)-多表查询
一.综述 查询操作主要从两个方面来说:单表查询和多表查询。多表查询包括:笛卡尔积、外键约束、内连接查询、外链接查询、自连接查询。二.案例设计 1. 设计产品表(product)。包括:主键id、产品名称... 查看详情
单表多表操作
一、单表操作1.1在python的脚本下调用Django环境test.py1.2用orm创建表models.py数据的迁移操作python3manage.pymakemigrations#只是对变化做一个记录,记录文件在app的migrations文件夹下python3manage.pymigrate #把更改提交到数据库python3manage.... 查看详情
单表的更新update和删除记录delete
...们想改下字段值。那么,我们需要update关键字。update分为单表更新和多表更新。 一、UPDATE语句 UPDATE语句其实有两种方式,分别是单表更新和多表更新,多表更新等到后面我们学完连接以后再去学习,所以今天我... 查看详情
wen应用/路由控制/视图函数/单表多表操作(代码片段)
一、 1.wen应用:BS架构的应用程序,B是浏览器,S:server(实现了wsgi协议)+application https://www.cnblogs.com/liuqingzheng/articles/9523087.html 2.MVC和MTV(Django) M:Model和数据库打交道 V:模板 C:... 查看详情
数据库操作语言——dml语言(代码片段)
...#xff09;2.语法二3.两种方式的比较二、修改语句--update1.修改单表记录2.修改多表记录三、删除语句--delete1.单表的删除2.多表的删除一、插入语句–insert1.语法一(经典)insertinto表名(列名,...)values(值1& 查看详情
数据库操作语言——dml语言(代码片段)
...#xff09;2.语法二3.两种方式的比较二、修改语句--update1.修改单表记录2.修改多表记录三、删除语句--delete1.单表的删除2.多表的删除一、插入语句–insert1.语法一(经典)insertinto表名(列名,...)values(值1& 查看详情
oracle查询技巧与优化字符串操作(代码片段)
前言前两篇blog分别介绍了Oracle中的单表查询(Oracle查询技巧与优化(一)单表查询与排序)与多表查询(Oracle查询技巧与优化(二)多表查询)的相关技巧与优化,那么接下来本篇blog就具体研... 查看详情
模型层单表操作(代码片段)
模型层单表操作单表操作例:1.单表的查询1.单表查询所有用户:models.Book.objects.all()得到的是queryset对象(当成列表),列表里面,一个一个的对象[user1,user2]?2.render(request,‘booklist.html‘,‘book_list‘:ret)?3.模板里:%foruserinbook_list%#要循环的... 查看详情
mysql单表操作(代码片段)
文章目录MySQL单表操作一、排序二、聚合函数三、分组四、limit关键字MySQL单表操作一、排序语法格式说明SELECT字段名FROM表名[WHERE字段=值]ORDERBY字段名[ASC]ASC表示升序排序(默认)SELECT字段名FROM表名[WHERE字段=值]ORDERBY字段名[DES... 查看详情
mysql单表操作(代码片段)
文章目录MySQL单表操作一、排序二、聚合函数三、分组四、limit关键字MySQL单表操作一、排序语法格式说明SELECT字段名FROM表名[WHERE字段=值]ORDERBY字段名[ASC]ASC表示升序排序(默认)SELECT字段名FROM表名[WHERE字段=值]ORDERBY字段名[DES... 查看详情
查询语句select[单表操作](代码片段)
---SQL单表简单查询1、单表操作&别名的使用1--查询表的所有数据:select*from表名;通配符*代表所有2select*fromemp;1--查询表中指定字段的值:select字段名1,字段名2,...from表名;2selectempno,ename,job,sal,hiredate,commfromemp;1--查询结果中的字段... 查看详情
学员管理示例——班级管理(单表操作)(代码片段)
一、新建views文件夹 1、新建views文件夹目的:给不同管理的操作分类,比如班级操作归为一类。 2、必须删除原来的views,以免路径搜索不到新建views文件夹 3、创建classes.py文件 二、操作流程(URL->函数->... 查看详情
springdatajpa多表关联操作(代码片段)
目录1关联映射操作1.1多表之间的关系和操作多表的操作步骤1.1.1@OneToMany:1.1.2@ManyToOne1.1.3@JoinColumn1.2一对多的关联关系1.3多对多的关联关系1.3.1@ManyToMany1.3.2@JoinTable1.3.3@JoinColumn2对象导航查询3Specification的多表联合... 查看详情