• Django中ORM框架的各个操作


    在这里插入图片描述

    我们会好奇,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()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    数据库迁移

    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()
    
    • 1
    • 2
    例子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)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    查询数据

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

    更新数据

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

    删除数据

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

    复杂查询

    连接查询

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

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

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

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

    聚合查询

    例子9:计算书籍总数
    from django.db.models import Count
    
    book_count = Book.objects.aggregate(total_books=Count('id'))
    
    • 1
    • 2
    • 3

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

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

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

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

  • 相关阅读:
    开发环境搭建---Ubuntu18.04开发环境搭建
    python就是学不会怎么办?
    【ASTGCN】代码解读(torch)之train_ASTGCN_r(二)
    Day705.Tomcat拒绝连接原因分析及网络优化 -深入拆解 Tomcat & Jetty
    统计redis中key的数量
    实训笔记——Spark SQL编程
    TP、TN、FP、FN白话解析,看这一篇就够了
    Android 10.0 禁用插入耳机时弹出的保护听力对话框
    Qt Quick读取本地文件并显示成表格
    Redis 面试题
  • 原文地址:https://blog.csdn.net/weixin_53742691/article/details/133936084