• 使用 Django ORM 进行数据库操作



    Django是一个流行的Web应用程序框架,它提供了一个强大且易于使用的对象关系映射(ORM)工具,用于与数据库进行交互。在本文中,我们将介绍如何使用Django ORM进行数据库操作,包括创建模型、查询数据、更新和删除等。
    在这里插入图片描述

    创建Django项目和应用

    首先,确保你已经安装了Django。如果没有安装,可以使用以下命令进行安装:

    pip install django
    

    接下来,创建一个新的Django项目和一个应用:

    django-admin startproject myproject
    cd myproject
    python manage.py startapp myapp
    

    定义模型

    在Django中,模型是与数据库表对应的Python类。在myapp/models.py文件中定义模型:

    from django.db import models
    
    class Author(models.Model):
        name = models.CharField(max_length=100)
        email = models.EmailField()
    
        def __str__(self):
            return self.name
    
    class Book(models.Model):
        title = models.CharField(max_length=200)
        author = models.ForeignKey(Author, on_delete=models.CASCADE)
        publish_date = models.DateField()
    
        def __str__(self):
            return self.title
    

    然后,在myproject/settings.py文件中将myapp应用添加到INSTALLED_APPS列表中:

    INSTALLED_APPS = [
        # ...
        'myapp',
        # ...
    ]
    

    运行以下命令创建数据库表:

    python manage.py makemigrations
    python manage.py migrate
    

    查询数据

    使用Django ORM可以轻松地执行各种类型的数据库查询。例如,以下是一些常见的查询示例:

    # 获取所有的作者
    authors = Author.objects.all()
    
    # 根据条件过滤书籍
    recent_books = Book.objects.filter(publish_date__gte='2022-01-01')
    
    # 获取单个对象
    book = Book.objects.get(title='Python入门指南')
    

    更新和删除数据

    更新数据也很简单,只需使用save()方法保存修改后的对象:

    book = Book.objects.get(title='Python入门指南')
    book.title = 'Python进阶指南'
    book.save()
    

    要删除数据,可以使用delete()方法:

    book = Book.objects.get(title='Python进阶指南')
    book.delete()
    

    总结与进阶

    除了基本的数据库操作外,Django ORM还提供了许多其他高级功能,可以帮助开发人员更好地管理数据。一些拓展的内容包括:

    聚合和注解

    Django ORM允许使用聚合函数(如Sum、Count等)来执行复杂的数据分析操作,同时也支持使用注解(annotate)对查询结果进行标注,为结果集添加额外的信息。

    from django.db.models import Count
    # 计算每位作者出版的书籍数量
    authors_with_book_count = Author.objects.annotate(book_count=Count('book'))
    

    跨模型查询

    通过Django ORM可以方便地进行跨模型的查询,利用ForeignKey、ManyToManyField等字段建立模型之间的关联,并且可以通过这些关联进行复杂的数据检索操作。

    # 获取某个作者的所有书籍
    author = Author.objects.get(name='张三')
    books = author.book_set.all()
    

    原始SQL查询

    虽然Django ORM提供了强大的查询API,但有时候仍然需要执行原始的SQL查询。Django ORM允许开发人员执行原始的SQL查询,并将结果映射到模型中。

    from django.db import connection
    # 执行原始的SQL查询
    with connection.cursor() as cursor:
        cursor.execute("SELECT * FROM myapp_author")
        row = cursor.fetchone()
    

    通过深入学习和掌握这些进阶功能,开发人员可以更好地利用Django ORM来处理各种复杂的数据库操作,从而更高效地构建稳健的Web应用程序。

    希望本文能够帮助你更全面地理解和应用Django ORM,进一步提升开发技能和应用水平!

  • 相关阅读:
    【C++】借助cout进行控制台文本输出的基本原理及复杂格式控制方法
    install flash_atten
    数字孪生技术栈的应用场景的优点
    架构师该不该写代码?
    人工智能的未来发展前景:机遇与挑战
    PyCharm中使用pyqt5的方法2-2
    SpringCloud案例day05
    java 企业工程管理系统软件源码+Spring Cloud + Spring Boot +二次开发+ MybatisPlus + Redis
    微信小程序如何在切换页面后原页面状态不变
    v-html有什么问题
  • 原文地址:https://blog.csdn.net/ZuoZuoDuiChang/article/details/139237442