当前位置: 首页 > news >正文

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&#xff…...

Levels - UE5中的建模相关

一些日常的笔记; 可以使用Shapes面板建立基础模型: 可以在PolyModel中继续细分模型: UE5中的建模有PolyGroups概念,可以在Attributes面板中直接编辑: 使用GrpPnt方式可以直接用笔刷设定新的PolyGroups,这样…...

数据中心与数据仓库的区别

在数字化时代,数据已经成为企业竞争的核心资源,数据处理和数据管理也变得越来越重要。在数据处理方面,数据中台和数据仓库是两种常见的数据处理方式,它们有着不同的特点和适用场景。本文将从技术角度对数据中台和数据仓库的区别进…...

[2023.09.18]: Rust中类型转换在错误处理中的应用解析

随着项目的进展&#xff0c;关于Rust的故事又翻开了新的一页&#xff0c;今天来到了服务器端的开发场景&#xff0c;发现错误处理中的错误类型转换有必要分享一下。 Rust抽象出来了Result<T,E>&#xff0c;T是返回值的类型&#xff0c;E是错误类型。只要函数的返回值的类…...

前端工作日常

机缘 记录和遇到的问题作为记录 收获 收获代码提高和认知 日常 使用js去操作数组或者对象 空闲时间可以多学学基础算法 比如&#xff08;冒泡&#xff0c;倒序&#xff0c;去重&#xff0c;笛卡尔积算法&#xff0c;各种各样的排序方法等等等&#xff09; 正确良好的使用循环…...

C++:C++哪些时候用到const

声明常量&#xff1a;使用const关键字定义一个常量&#xff0c;不允许对其进行更改。例如&#xff1a; const int PI 3.1415926;修饰函数参数&#xff1a;加上const限定符可以确保函数不会修改传入的参数值。例如&#xff1a; void print(const int num) {// num不能在函数内…...

OpenCV之九宫格图像

将一张图像均等分成九份&#xff0c;然后将这九个小块按一定间隔&#xff08;九宫格效果&#xff09;拷贝到新画布上。效果如下图所示&#xff1a; 源码&#xff1a; #include<iostream> #include<opencv2/opencv.hpp> using namespace std; using namespace cv;i…...

微软Phi-3-mini保姆级教程:一键部署,快速体验文本生成

微软Phi-3-mini保姆级教程&#xff1a;一键部署&#xff0c;快速体验文本生成 1. 镜像简介与特点 1.1 模型背景 Phi-3-mini-4k-instruct-gguf是微软推出的轻量级文本生成模型&#xff0c;属于Phi-3系列中的高效版本。这个模型特别适合处理问答、文本改写、摘要整理等常见文本…...

Qwen2.5-VL底座+lychee-rerank-mm效果惊艳:批量图片智能打分可视化展示

Qwen2.5-VL底座lychee-rerank-mm效果惊艳&#xff1a;批量图片智能打分可视化展示 1. 项目简介 这是一个专门为RTX 4090显卡&#xff08;24G显存&#xff09;打造的智能图片排序系统。核心基于阿里通义千问Qwen2.5-VL多模态大模型&#xff0c;结合Lychee-rerank-mm专业重排序…...

OFDM802.11a的FPGA实现(八)二级交织:子载波交织优化策略(附Verilog与Matlab对比)

1. 二级交织在802.11a中的核心作用 在无线通信系统中&#xff0c;突发错误是导致数据传输失败的主要原因之一。802.11a标准采用二级交织技术来解决这个问题&#xff0c;它通过重新排列数据比特的顺序&#xff0c;使得原本连续的突发错误在接收端被分散开来。这种技术就像是洗牌…...

CCS12.2搭配C2000ware 4.03导入工程报错?手把手教你修复头文件路径变量(MATLAB 2023b适用)

CCS12.2与C2000ware 4.03工程导入报错全解析&#xff1a;从路径变量修复到MATLAB 2023b联调实战 当你满怀期待地将MATLAB 2023b生成的代码导入CCS12.2&#xff0c;准备与C2000ware 4.03来场完美邂逅时&#xff0c;编译器却毫不留情地抛出一连串头文件找不到的错误——这种从云端…...

通义千问1.5-1.8B-Chat-GPTQ-Int4入门:C语言基础概念问答助手

通义千问1.5-1.8B-Chat-GPTQ-Int4入门&#xff1a;C语言基础概念问答助手 刚学C语言那会儿&#xff0c;指针、结构体这些概念真是让人头大。书上讲得抽象&#xff0c;网上资料又太零散&#xff0c;要是当时有个能随时提问、还能给出代码例子的“随身老师”就好了。现在&#x…...

OpenClaw云端体验指南:星图平台Qwen3-14B镜像+OpenClaw沙盒部署

OpenClaw云端体验指南&#xff1a;星图平台Qwen3-14B镜像OpenClaw沙盒部署 1. 为什么选择云端沙盒体验&#xff1f; 第一次接触OpenClaw时&#xff0c;我尝试在本地MacBook上部署&#xff0c;结果被复杂的依赖关系和环境配置劝退。直到发现星图平台的Qwen3-14B镜像OpenClaw沙…...

2026-04-06:字典序最小和为目标值且绝对值是排列的数组。用go语言,给你一个正整数 n 和一个整数 target。 你需要构造一个长度为 n 的整数数组,要求同时满足: 1.数组中所有元素的总

2026-04-06&#xff1a;字典序最小和为目标值且绝对值是排列的数组。用go语言&#xff0c;给你一个正整数 n 和一个整数 target。 你需要构造一个长度为 n 的整数数组&#xff0c;要求同时满足&#xff1a; 1.数组中所有元素的总和必须等于 target。 2.把数组里每个元素取绝对值…...

OpenClaw自动化测试:Phi-3-vision-128k-instruct版本升级对比

OpenClaw自动化测试&#xff1a;Phi-3-vision-128k-instruct版本升级对比 1. 测试背景与动机 上周在星图镜像广场发现Phi-3-vision-128k-instruct的新版本镜像更新&#xff0c;作为长期使用OpenClaw进行自动化测试的技术爱好者&#xff0c;我决定系统性地验证这个号称"支…...

2026届毕业生推荐的六大降重复率平台解析与推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 要是为了切实有效地去降低文本所具备的AIGC也就是人工智能生成内容的特征&#xff0c;那就建…...

# 发散创新:基于Python与Stable Diffusion的AI绘画自动化流程设计与实践

发散创新&#xff1a;基于Python与Stable Diffusion的AI绘画自动化流程设计与实践 在人工智能技术飞速发展的今天&#xff0c;AI绘画已从实验室走向大众创作场景。如何将这一前沿能力融入开发者工作流&#xff1f;本文以 Python Stable Diffusion API&#xff08;如InvokeAI或…...