Django中ORM框架的各个操作

news2025/1/16 13:43:08

在这里插入图片描述

我们会好奇,python这么简洁的语言,数据查询是如何做的呢?我将进一步详细和深入地介绍Django中ORM框架的各个方面,包括MySQL的增删改查和复杂查询。让我们分步骤进行。

ORM框架介绍

Django的ORM框架是一个用于与数据库进行交互的工具,它将数据库表映射到Python对象上。这使得数据库操作更加抽象化,使开发人员可以使用Python代码而不是SQL来进行数据库交互。

模型定义

在Django中,数据库表由模型(Model)定义。模型是Python类,定义了数据结构以及与数据库表的映射关系。以下是一个示例模型定义:

from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.CharField(max_length=100)
    publication_date = models.DateField()

数据库迁移

Django使用迁移来管理数据库结构的变化。迁移是一种机制,它将模型定义翻译成SQL,并根据模型的更改来更新数据库。迁移分为两个步骤:

  1. 创建迁移文件:运行 python manage.py makemigrations 来创建一个包含数据库模型更改的迁移文件。

  2. 应用迁移:运行 python manage.py migrate 来应用迁移文件,将更改应用到数据库。

增删改查操作

增加数据

例子1:添加新书籍
new_book = Book(title="The Great Gatsby", author="F. Scott Fitzgerald", publication_date="1925-04-10")
new_book.save()
例子2:批量添加书籍
books_to_add = [
    Book(title="To Kill a Mockingbird", author="Harper Lee", publication_date="1960-07-11"),
    Book(title="1984", author="George Orwell", publication_date="1949-06-08")
]
Book.objects.bulk_create(books_to_add)

查询数据

例子3:查询所有书籍
all_books = Book.objects.all()
例子4:根据条件查询书籍
specific_books = Book.objects.filter(author="F. Scott Fitzgerald", publication_date__year=1925)

更新数据

例子5:更新书籍信息
book_to_update = Book.objects.get(title="The Great Gatsby")
book_to_update.title = "The New Gatsby"
book_to_update.save()

删除数据

例子6:删除书籍
book_to_delete = Book.objects.get(title="1984")
book_to_delete.delete()

复杂查询

连接查询

例子7:查询书籍及其作者的信息
books_with_author = Book.objects.select_related('author').all()

这将执行一个SQL查询,通过外键关系将书籍和作者的信息一次性获取,减少了数据库查询次数。

例子8:查询作者写的书籍
author_books = Author.objects.get(name="F. Scott Fitzgerald").book_set.all()

这利用了Django的反向关系,通过作者模型获取其写的书籍。

聚合查询

例子9:计算书籍总数
from django.db.models import Count

book_count = Book.objects.aggregate(total_books=Count('id'))

这使用aggregate函数计算所有书籍的数量。

例子10:找到出版日期最早的书籍
earliest_book = Book.objects.order_by('publication_date').first()

这使用order_by函数按出版日期升序排列书籍,并获取第一个结果。

这些例子详细展示了Django ORM框架的不同方面,包括模型定义、数据库迁移、增删改查和复杂查询操作。您可以根据您的具体应用需求进一步探索Django的ORM功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1111413.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于java的校园论坛系统,ssm+jsp,Mysql数据库,前台用户+后台管理,完美运行,有一万多字论文

目录 演示视频 基本介绍 论文目录 功能架构 系统截图 演示视频 基本介绍 基于java的校园论坛系统,Mysql数据库,系统整体采用ssmjsp设计,前台用户后台管理,完美运行,有一万多字论文。 用户功能: 1.系统…

分类预测 | MATLAB实现基于GRU-AdaBoost门控循环单元结合AdaBoost多输入分类预测

分类预测 | MATLAB实现基于GRU-AdaBoost门控循环单元结合AdaBoost多输入分类预测 目录 分类预测 | MATLAB实现基于GRU-AdaBoost门控循环单元结合AdaBoost多输入分类预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于GRU-AdaBoost门控循环单元结…

【四:httpclient的使用】

目录 1、Demo案例2、请求一个带cookies的get请求3、请求一个带cookies的post请求案例一,案例二的properties的配置 1、Demo案例 public class MyHttpClient {Testpublic void test1() throws IOException {//用来存放我们的结果String result;HttpGet get new Htt…

小黑子—Maven基础

Maven基础 一 小黑子的Maven学习1. Mavn的介绍2. Maven基础概念2.1 仓库2.2 坐标2.3 仓库配置 3. 手动写一个maven项目3.1 Maven项目构建命令3.2 插件创建工程 4. IDEA下的maven项目5. 依赖管理5.1 依赖配置5.2 依赖传递5.3 可选依赖(不透明)5.4 排除依赖…

【AI视野·今日Sound 声学论文速览 第二十七期】Tue, 17 Oct 2023

AI视野今日CS.Sound 声学论文速览 Tue, 17 Oct 2023 Totally 15 papers 👉上期速览✈更多精彩请移步主页 Daily Sound Papers LocSelect: Target Speaker Localization with an Auditory Selective Hearing Mechanism Authors Yu Chen, Xinyuan Qian, Zexu Pan, Ka…

Python逆向爬虫案例: 某网站AES逆向解密

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 环境使用: Python 3.8 Pycharm 👇 👇 👇 更多精彩机密、教程,尽在下方,赶紧点击了解吧~ python源码、视频教程、插件安装教程、资料我都准备好了&#xff0…

了解 AI :了解 AI 方面的一些术语 (中英文对照)

本心、输入输出、结果 文章目录 了解 AI :了解 AI 方面的一些术语 (中英文对照)前言AI 方面的一些术语 (中英文对照)AI 方面的一些术语 (中英文对照) - 文字版弘扬爱国精神 了解 AI &#xff1a…

网工内推 | IT主管、高级网工,上市公司,必须持有HCIE认证

01 深圳市飞荣达科技股份有限公司 招聘岗位:高级网络工程师 职责描述: 1. 参与、负责集团公司IT基础技术架构的规划设计、实施及维护、性能优化,包括数据中心机房、网络架构、虚拟化平台、信息安全设备及灾备系统等; 2. 负责集团…

如何给Github上的开源项目提交PR?

前言 对于一个热爱开源的程序员而言,学会给GitHub上的开源项目提交PR这是迈出开源的第一步。今天我们就来说说如何向GitHub的开源项目提交PR,当然你提交的PR可以是一个项目的需求迭代、也可以是一个Bug修复、再或者是一些内容文本翻译等等,并…

安装VSCode,提升工作效率!iPad Pro生产力进阶之路

文章目录 前言1. 本地环境配置2. 内网穿透2.1 安装cpolar内网穿透(支持一键自动安装脚本)2.2 创建HTTP隧道 3. 测试远程访问4. 配置固定二级子域名4.1 保留二级子域名4.2 配置二级子域名 5. 测试使用固定二级子域名远程访问6. iPad通过软件远程vscode6.1 创建TCP隧道 7. ipad远…

MyBatisPlus(二十一)乐观锁

使用场景 用于当有多个用户同时修改同一条数据的时候,只允许有一个修改成功。 实现原理 使用一个字段,用于记录数据的版本。 当修改数据时,会去检测当前版本是否是正在修改的版本,同时修改成功后会把 版本号 1。 实现方式 配…

Go学习第一章——开发环境安装以及快速入门(GoLand)

Go开发环境安装以及快速入门 一、环境配置1.1 go开发工具1.2 go sdk下载3.1 go相关命令行 二、快速入门2.1 创建项目2.2 创建.go程序文件2.3.配置 mod 的开启与关闭2.4 用 GoLand 写第一份代码2.5.代码静态检测(此部分非必要) 三、初步了解3.1 代码解释以…

设计模式:单例模式(C#、JAVA、JavaScript、C++、Python、Go、PHP)

大家好!本节主要介绍设计模式中的单例模式。 简介: 单例模式,它是一种常用的软件设计模式,它属于创建类型。单例模式的主要目的是确保一个类仅有一个实例,并提供一个全局访问点。 在单例模式中,一个类只有…

python控制Windows桌面程序自动化模块uiautomation

github仓库地址:GitHub - yinkaisheng/Python-UIAutomation-for-Windows: (Donot use 3.7.6,3.8.1):snake:Python 3 wrapper of Microsoft UIAutomation. Support UIAutomation for MFC, WindowsForm, WPF, Modern UI(Metro UI), Qt, IE, Firefox, Chrome ... uiaut…

【OJ比赛日历】快周末了,不来一场比赛吗? #10.21-10.27 #11场

CompHub[1] 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…)比赛。本账号会推送最新的比赛消息,欢迎关注! 以下信息仅供参考,以比赛官网为准 目录 2023-10-21(周六) #2场比赛2023-10-22…

硬件成本节省60%,四川华迪基于OceanBase的健康大数据数仓建设实践

导语:本文为四川华迪数据计算平台使用 OceanBase 替代 Hadoop 的实践,验证了 OceanBase 在性能和存储成本方面的优势:节省了 60% 的硬件成本,并将运维工作大幅减少,从 Hadoop 海量组件中释放出来;一套系统处…

【Python】文件操作

一、文件的编码 思考:计算机只能识别:0和1,那么我们丰富的文本文件是如何被计算机识别,并存储在硬盘中呢? 答案:使用编码技术( 密码本)将内容翻译成0和1存入 编码技术即:翻译的规则,记录了如何将内容翻译成二进制,以及如何将二…

2022年下半年 软件设计师 上午试卷(41题—75题)

UML活动图用于建模 (41) 。以下活动图中,活动A1之后,可能的活动执行序列顺序是 (42) 。 (41) A. 系统在它的周边环境的语境中所提供的外部可见服务 B. 某一时刻一组对象以及它们之间…

【代码随想录】算法训练营 第七天 第三章 哈希表 Part 2

454. 四数相加 题目 思路 这道题相当于是两数相加的加强版,其实大体思路是一致的,只不过这道题里先把四个数组中的数两两相加,把和作为map的key值,把和出现的次数作为value,这样先遍历完前两个数组,后面再…

nginx平滑升级添加echo模块、localtion配置、rewrite配置

nginx平滑升级添加echo模块、location配置、rewrite配置 文章目录 nginx平滑升级添加echo模块、location配置、rewrite配置1.环境说明:2.nginx平滑升级原理:3.平滑升级nginx,并添加echo模块3.1.查看当前nginx版本以及老版本编译参数信息3.2.下…