| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> Django9:ORM数据库操作及关系映射 -> 正文阅读 |
|
[大数据]Django9:ORM数据库操作及关系映射 |
0、管理器对象?????? 每个继承自models.Model的模型类,都会有一个objects对象被同样继承下来。数据库的增删改查可通过模型的管理器实现。
1、创建数据方法1:
方法2:
2、查询? ? ? ?通过MyModel.objecs管理器掉员工查询方法 ?(1)在模型类中定义__str__方法,自定义QuerySet中输出格式 例:在Book模型类中定义如下
(2)values(‘列1’, ‘列2’)
(3)values_list(‘列1’, ‘列2’)
(4)order_by()
默认升序排序,降序在列前增加’-’ 3、查询谓词?????? 做更灵活的条件查询时需要使用查询谓词。每一个查询谓词时一个独立的查询功能。 (1)__exact:等值匹配 例:
(2)__contains:包含指定值 例:
另: __startwith:以xx开始 __endwith:以xx结束 (3)__gt:大于
(4)__in:查找数据是否在指定范围内 例:
__range:查找数据是否在指定区间范围内 4、更新数据(1)单个实体更新(a)查 ? ? ? ?通过get()得到要修改的实体对象 (b)改 ?????? 通过对象.属性的方式修改数据 (c)保存 通过对象.save()保存数据 (2)批量更新数据? ? ? ?直接调用QuerySet的update(属性=值实现批量修改 例:
5、删除数据(1)单个数据删除
(2)批量删除
(3)伪删除 ? ? ? ?伪删除即在表中添加一个布尔型字段,默认是True,执行删除时,将欲删除数据的is_active字段设置为False。注意,伪删除时,确保显示数据的地方,均加了is_active=True的过滤查询。 6、F对象? ? ? ?一个F对象代表数据库中某条记录的字段的信息。 (1)作用:
(2)语法
7、Q对象?????? 当在获取查询结果集使用复杂的逻辑或|、逻辑非~等操作时可借助于Q对象进行操作。 (1)作用 ?????? 在条件中用来实现除and(&)以外的or(|)或not(~)操作。 运算符: & 与、|或、~非 (2)语法
例:
8、聚合查询?????? 聚合查询是指对数据表中的一个字段的数据进行部分或全部进行统计查询,主要分为整表聚合、分组聚合。 (1)整表聚合?????? 不带分组的聚合查询是指导将全部数据进行统计查询。 (a)聚合函数导入
(b)语法
返回结果:结果变量名和值组成的字典 格式:{“结果变量名”:值} (2)分组聚合?????? 分组聚合是值通过计算查询结果中每一个对象所关联的对象集合,从而得出总计值(也可是平均值或综合),即为查询集的每一项生成聚合。 (a)语法
返回值:QuerySet (b)步骤
例:
9、原生数据库操作?????? Django也可支持直接sql语句的方式通信数据库。不推荐,含sql注入。 (1)查询 使用MyModel.object.raw()进行数据库查询操作 语法:MyModel.object.raw(sql语句,拼接参数) 返回值:RawQuerySet集合对象(只支持基础操作,如循环) 例:
例:防sql注入
(2)cursor? ? ? ?完全跨过模型类操作数据库:查询、更新、删除 (a)导入cursor所在的包
(b)用创建cursor类的构造函数创建cursor对象,再使用cursor对象, 为保证在出现异常时能是否cursor资源,通常使用with语句进行创建操作:
10、一对一映射语法:
(1)on_delete:级联删除 ????????models.CASCADE级联删除:Django模拟SQL约束ON DELETE CASCADE的行为,并删除包含ForeignKey的对象 ????????models.PROTECT:抛出ProtectedError以阻止被引用对象的删除,等同于msyql默认的RESTRICT。 ????????SET_NULL:设置ForeignKey null,需指定null=Ture ????????SET_DEFAUL:ForeignKey设置为默认值,必须ForeignKey的默认值 例:
11、一对多映射语法: ForeignKey(“一”的模型类, on_delete=xxx) 例:
12、多对多映射? ? ? ?多对多在mysql中需要第三张表来实现,在Django中无需手动创建第三张表, Django自动完成。 语法: ?????? 在关联的两个类中的任意一个类中,增加 属性=models.ManyToManyField(MyModel) 例:
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 23:08:27- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |