ORM基本操作
ORM基本操作
基本操作包括增删改查操作,即(CRUD操作)
CRUD是指在做计算处理时的增加(Create)、读取查询(Read)、更新Update)和删除(Delete)
ORM CRUD 核心-> 模型类管理器对象
每个继承自 models.Model 的模型类,都会有一个 objects 对象被同样继承下来。这个对象叫管理器对象
数据库的增删改查可以通过模型的管理器实现
class MyMode1 (models .Mode1) :...
MyMode1.objects.create(...) # objects 是管理器对象
创建数据
Django ORM 使用一种直观的方式把数据库表中的数据表示成Python 对象
创建数据中每一条记录就是创建一个数据对象
方案1
MyModel.objects.create(属性1=值1,属性2=值1,...)成功: 返创建好的实体对象失败: 抛出异常
方案2
创建MyModel实例对象并调用 save()进行保存
obj = MyMode1(属性=值,属性=值)
obj.属性=值
obj.save()
启动Django shell进行相应的操作(项目代码发生变化时,Django shell要重新启动)
python3 manage.py shell
查询操作
all()方法
用法:MyModel.objects.all()
作用: 查询MyModel实体中所有的数据
等同于 select * from tabel
返回值: QuerySet容器对象,内部存放 MyModel 实例可以在模型类中定义__str__ 方法,自定义QuerySet中的输出格式例如 在Book模型类下定义如下
def __str__(self):return '%s %s %s%s'(self.title, self.price, self.pub, self.market_price)values('列1','列2'..)
用法:MyModel.obiects.values(...)
作用:查询部分列的数据并返回
等同于 select 列1,列2 from xxx
返回值: OuerySet
返回查询结果容器,容器内存字典,每个字典代表一条数据
格式为:{'列1':'值1','列2':'值2'}values list('列1','列2'...)
用法:MyModel.objects.values list(....)
作用:返回元组形式的查询结果
等同于 select 列1列2 from xxx
返回值: uerySet容器对象,内部存放元组会将查询出来的数据封装到元组中,再封装到查询集合OuerySet中order_by()
用法:MyModelobjects.order_by('-列','列')
作用:
与all()方法不同,它会用SOL 语句的ORDER BY 子句对查询结果进行根据某个字段选择性的进行排序
说明:
默认是按照升序排序,降序排序则需要在列前增加-表示条件查询filter(条件)
语法:MyModel.obiects.filter(属性1=值1,属性2=值2)
作用: 返回包含此 条件的全部的数据集
返回值:
QuerySet容器对象,内部存放 MyModel 实例
说明:
当多个属性在一起时为”与”关系exclude(条件)
语法:MyModel.objects.exclude(条件)
作用: 返回不包含此 条件的全部的数据集get(条件)
语法:MyModel.objects.get(条件)
作用: 返回满足条件的唯一一条数据
说明: 该方法只能返回一条数据
查询结果多余一条数据则抛出ModelMultipleObiectsReturned异常
查询结果如果没有数据则抛出Model.DoesNotExist异常查询谓词定义:做更灵活的条件查询时需要使用查询谓词
说明:每一个查询谓词是一个独立的查询功能
__exact:等值匹配
示例:
Author.objects.filter(id__exact=1)
# 等同于select * from author where id = 1contains:包含指定值
示例: Author.objects.filter(name__contains='w')
# 等同于 select * from author where name like %w%
startswith:以XXX 开始 w%
endswith:以XXX 结束 %w__gt:大于指定值
样例: Author.objects.filer(age__gt=50)
# 等同于 select * from author where age > 50
__gte:大于等于
__lt:小于
__lte:小于等于__in:查找数据是否在指定范围内
样例:
Author.objects.filter(country__in=['中国',日本',韩国'])
# 等同于 select * from author where country in ('中国',日本',韩国')
__range:查找数据是否在指定的区间范围内
样例:
# 查找年龄在某一区间内的所有作者
Author.objects.filter(age__range=(35,50))
# 等同于 SELECT... WHERE Author BETWEEN 35 and 50;
更新操作
更新单个数据
修改单个实体的某些字段值的步骤
1.查
通过 get()得到要修改的实体对象
2.改
通过 对象.属性的方式修改数据
3.保存
通过对象save()保存数据批量更新数据
直接调用OuerySet的update(属性=值) 实现批量修改
示例
# 将 id大于3的所有图书价格定为0元
books = Book.objects.filter(id__gt=3)
books.update(price=0)
# 将所有书的零售价定为100元
books = Book.objects.a11()
books.update(market_price=100)
删除操作
单个数据删除
步骤
1.查找查询结果对应的一个数据对象
2调用这个数据对象的delete(方法实现删除
try:
auth = Author.objects.get(id=1)
auth.deTete()
except:
print(删除失败)批量删除
步骤
1查找查询结果集中满足条件的全部QuerySet查询集合对象
2调用查询集合对象的delete()方法实现删除
# 删除全部作者中,年龄大于65的全部信息
auths = Author.objects.filter(age__gt=65)
auths .delete()伪删除
通常不会轻易在业务里把数据真正删掉,取而代之的是做伪删除即在表中添加一个布尔型字段(is_active),默认是True;执行删除时,将欲删除数据的is_active字段置为False
注意:用伪删除时,确保显示数据的地方,均加了is_active=True的过滤查询
相关文章:
ORM基本操作
ORM基本操作 基本操作包括增删改查操作,即(CRUD操作) CRUD是指在做计算处理时的增加(Create)、读取查询(Read)、更新Update)和删除(Delete) ORM CRUD 核心-> 模型类管理器对象 每个继承自 models.Model 的模型类,都会有一个 objects 对象被同样继…...
c语言进阶部分详解(指针进阶2)
大家好!我快马加鞭接着写出指针部分part2部分。第一部分见:c语言进阶部分详解(指针进阶1)_总之就是非常唔姆的博客-CSDN博客 指针初阶部分见:c语言进阶部分详解(指针初阶)_总之就是非常唔姆的博…...
Java基础(一)——Hello World,8种数据类型,键盘录入
个人简介 👀个人主页: 前端杂货铺 🙋♂️学习方向: 主攻前端方向,正逐渐往全干发展 📃个人状态: 研发工程师,现效力于中国工业软件事业 🚀人生格言: 积跬步…...
JAVA学习笔记(IF判断结构)
/*** 学习JAVA单分支结构* 掷骰子游戏* 1.如果三个随机数的和大于15,则手气不错;* 2.如果三个随机数的和在10-15之间,手气一般;* 3.如果三个随机数的和1在0以下,手气不太好。*/public class TestIf01 {public static v…...
【跟小嘉学 PHP 程序设计】二、PHP 基本语法
系列文章目录 【跟小嘉学 PHP 程序设计】一、PHP 开发环境搭建 【跟小嘉学 PHP 程序设计】二、PHP 基本语法 文章目录 系列文章目录@[TOC](文章目录)前言一、PHP基本语法1.1、hello,world1.2、PHP语法的其他形式1.2.1、简短形式(了解即可)1.2.2、Script 风格1.2.3、ASP 风格1…...
面试总结之微服务篇
一、概览 1、微服务常用组件 微服务给系统开发带来了诸多问题和挑战,如服务间通信和调用的复杂性、数据一致性和事务管理、服务治理和版本管理等,为解决应对这些问题和挑战,各种微服务组件应运而生微服务的常见组件和实现: 1…...
ElementUI之登陆+注册
一.什么是ElementUI 二.ElementUI完成用户注册登录界面搭建 使用命令npm install element-ui -S,添加Element-UI模块 导依赖 建立登录和注册页面 编辑 配置样式 编写登录页面(Login) 编写注册页面(reginter) …...
新版kafka可视化界面组件
二、安装kafka可视化客户端工具(kafka tool 2) 1、下载安装 在官网中找到对应自己电脑系统的版本: kafka Tool2官网下载地址: Offset Explorer 这个方案是为Kafka依赖zookeeper提供的可视化解决方案。 前言 在早期使用kafka的…...
P1102 A-B 数对 【双指针(尺取法)】
P1102 A-B 数对 【双指针(尺取法)】 题目描述 给出一串正整数数列以及一个正整数 C,要求计算出所有满足 A−BC 的数对的个数(不同位置的数字一样的数对算不同的数对)。 输入格式 输入共两行。 第一行,两个…...
Flutter绘制拖尾效果
演示: 代码: import dart:ui;import package:flutter/material.dart; import package:kq_flutter_widgets/widgets/chart/ex/extension.dart;class TrailingView extends StatelessWidget {const TrailingView({super.key});overrideWidget build(Build…...
【Newman+Jenkins】实施接口自动化测试
一、是什么Newman Newman就是纽曼手机这个经典牌子,哈哈,开玩笑啦。。。别当真,简单地说Newman就是命令行版的Postman,查看官网地址。 Newman可以使用Postman导出的collection文件直接在命令行运行,把Postman界面化运…...
kr 第三阶段(六)C++ 逆向
结构体 结构体对齐 设置结构体对齐值 方法1:在 Visual Studio 中可以在 项目属性 -> 配置属性 -> C/C -> 所有选项 -> 结构体成员对齐 中设置结构体对齐大小。方法2:使用 #pragma pack(对齐值) 来设置,不过要想单独设置一个结…...
医药行业安全生产信息化建设分享
随着科技的快速发展和全球化进程的推进,医药行业作为人类健康和安全的重要组成部分,面临着日益严峻的安全生产挑战。近年来,医药企业对于安全生产的需求越来越强烈,安全生产信息化建设成为了医药行业发展的重要趋势。本文将探讨医…...
C 语言简单入门
C 语言发展历史|标准 1972年,丹尼斯里奇(Dennis Ritch)和肯汤普逊(Ken Tompson)在贝尔实验室开发 UNIX 操作系统时基于 B 语言设计出 C 语言。 1987年,布莱恩柯林汉(Brian Kernighanÿ…...
Levels - UE5中的建模相关
一些日常的笔记; 可以使用Shapes面板建立基础模型: 可以在PolyModel中继续细分模型: UE5中的建模有PolyGroups概念,可以在Attributes面板中直接编辑: 使用GrpPnt方式可以直接用笔刷设定新的PolyGroups,这样…...
数据中心与数据仓库的区别
在数字化时代,数据已经成为企业竞争的核心资源,数据处理和数据管理也变得越来越重要。在数据处理方面,数据中台和数据仓库是两种常见的数据处理方式,它们有着不同的特点和适用场景。本文将从技术角度对数据中台和数据仓库的区别进…...
[2023.09.18]: Rust中类型转换在错误处理中的应用解析
随着项目的进展,关于Rust的故事又翻开了新的一页,今天来到了服务器端的开发场景,发现错误处理中的错误类型转换有必要分享一下。 Rust抽象出来了Result<T,E>,T是返回值的类型,E是错误类型。只要函数的返回值的类…...
前端工作日常
机缘 记录和遇到的问题作为记录 收获 收获代码提高和认知 日常 使用js去操作数组或者对象 空闲时间可以多学学基础算法 比如(冒泡,倒序,去重,笛卡尔积算法,各种各样的排序方法等等等) 正确良好的使用循环…...
C++:C++哪些时候用到const
声明常量:使用const关键字定义一个常量,不允许对其进行更改。例如: const int PI 3.1415926;修饰函数参数:加上const限定符可以确保函数不会修改传入的参数值。例如: void print(const int num) {// num不能在函数内…...
OpenCV之九宫格图像
将一张图像均等分成九份,然后将这九个小块按一定间隔(九宫格效果)拷贝到新画布上。效果如下图所示: 源码: #include<iostream> #include<opencv2/opencv.hpp> using namespace std; using namespace cv;i…...
微软Phi-3-mini保姆级教程:一键部署,快速体验文本生成
微软Phi-3-mini保姆级教程:一键部署,快速体验文本生成 1. 镜像简介与特点 1.1 模型背景 Phi-3-mini-4k-instruct-gguf是微软推出的轻量级文本生成模型,属于Phi-3系列中的高效版本。这个模型特别适合处理问答、文本改写、摘要整理等常见文本…...
Qwen2.5-VL底座+lychee-rerank-mm效果惊艳:批量图片智能打分可视化展示
Qwen2.5-VL底座lychee-rerank-mm效果惊艳:批量图片智能打分可视化展示 1. 项目简介 这是一个专门为RTX 4090显卡(24G显存)打造的智能图片排序系统。核心基于阿里通义千问Qwen2.5-VL多模态大模型,结合Lychee-rerank-mm专业重排序…...
OFDM802.11a的FPGA实现(八)二级交织:子载波交织优化策略(附Verilog与Matlab对比)
1. 二级交织在802.11a中的核心作用 在无线通信系统中,突发错误是导致数据传输失败的主要原因之一。802.11a标准采用二级交织技术来解决这个问题,它通过重新排列数据比特的顺序,使得原本连续的突发错误在接收端被分散开来。这种技术就像是洗牌…...
CCS12.2搭配C2000ware 4.03导入工程报错?手把手教你修复头文件路径变量(MATLAB 2023b适用)
CCS12.2与C2000ware 4.03工程导入报错全解析:从路径变量修复到MATLAB 2023b联调实战 当你满怀期待地将MATLAB 2023b生成的代码导入CCS12.2,准备与C2000ware 4.03来场完美邂逅时,编译器却毫不留情地抛出一连串头文件找不到的错误——这种从云端…...
通义千问1.5-1.8B-Chat-GPTQ-Int4入门:C语言基础概念问答助手
通义千问1.5-1.8B-Chat-GPTQ-Int4入门:C语言基础概念问答助手 刚学C语言那会儿,指针、结构体这些概念真是让人头大。书上讲得抽象,网上资料又太零散,要是当时有个能随时提问、还能给出代码例子的“随身老师”就好了。现在&#x…...
OpenClaw云端体验指南:星图平台Qwen3-14B镜像+OpenClaw沙盒部署
OpenClaw云端体验指南:星图平台Qwen3-14B镜像OpenClaw沙盒部署 1. 为什么选择云端沙盒体验? 第一次接触OpenClaw时,我尝试在本地MacBook上部署,结果被复杂的依赖关系和环境配置劝退。直到发现星图平台的Qwen3-14B镜像OpenClaw沙…...
2026-04-06:字典序最小和为目标值且绝对值是排列的数组。用go语言,给你一个正整数 n 和一个整数 target。 你需要构造一个长度为 n 的整数数组,要求同时满足: 1.数组中所有元素的总
2026-04-06:字典序最小和为目标值且绝对值是排列的数组。用go语言,给你一个正整数 n 和一个整数 target。 你需要构造一个长度为 n 的整数数组,要求同时满足: 1.数组中所有元素的总和必须等于 target。 2.把数组里每个元素取绝对值…...
OpenClaw自动化测试:Phi-3-vision-128k-instruct版本升级对比
OpenClaw自动化测试:Phi-3-vision-128k-instruct版本升级对比 1. 测试背景与动机 上周在星图镜像广场发现Phi-3-vision-128k-instruct的新版本镜像更新,作为长期使用OpenClaw进行自动化测试的技术爱好者,我决定系统性地验证这个号称"支…...
2026届毕业生推荐的六大降重复率平台解析与推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 要是为了切实有效地去降低文本所具备的AIGC也就是人工智能生成内容的特征,那就建…...
# 发散创新:基于Python与Stable Diffusion的AI绘画自动化流程设计与实践
发散创新:基于Python与Stable Diffusion的AI绘画自动化流程设计与实践 在人工智能技术飞速发展的今天,AI绘画已从实验室走向大众创作场景。如何将这一前沿能力融入开发者工作流?本文以 Python Stable Diffusion API(如InvokeAI或…...
