Django 通过 ORM 实现表的CRUD

1. 简介

ORM(Object-Relational Mapping) 是一种程序设计技术,它允许开发者使用面向对象的方式来操作数据库。Django 是一个流行的 Python Web 框架,它内置了强大的 ORM,使得对数据库进行增删改查操作变得非常简单。

本文将介绍如何使用 Django ORM 来实现表的 CRUD(Create, Read, Update, Delete)操作。我们将通过一个简单的示例来演示每个操作的具体步骤。

2. 准备工作

在开始之前,您需要确保已经安装好 Django,并且设置好数据库连接信息。假设我们要操作的表名为 "Book",它具有以下字段:

id: 主键

title: 书名

author: 作者

pub_date: 出版日期

3. 创建记录

创建一条新的记录非常简单,只需要使用 Django ORM 提供的模型类的 create() 方法即可。下面是一个示例:

from myapp.models import Book

book = Book.objects.create(title='Python Cookbook', author='David Beazley', pub_date='2018-01-01')

上述代码创建了一本书的实例,并插入到数据库中。在 create() 方法中,您可以指定任意数量的字段和对应的值,来创建记录。

4. 查询记录

查询记录是非常常见的操作。Django ORM 提供了灵活且强大的查询 API,使得查询变得非常简单。

4.1 获取所有记录

如果您想获取表中的所有记录,可以使用模型类的 objects.all() 方法。这个方法返回一个 QuerySet 对象,它包含了符合查询条件的所有记录。

books = Book.objects.all()

for book in books:

print(book.title)

上述代码会打印出表中所有记录的书名。

4.2 根据条件查询

如果您只想获取符合特定条件的记录,可以使用 objects.filter() 方法。

books = Book.objects.filter(author='David Beazley')

for book in books:

print(book.title)

上述代码会打印出作者为 "David Beazley" 的所有书名。

还可以通过使用 objects.exclude() 方法来排除符合特定条件的记录:

books = Book.objects.exclude(pub_date__lt='2010-01-01')

for book in books:

print(book.title)

上述代码会打印出出版日期晚于 "2010-01-01" 的所有书名。

5. 更新记录

更新记录也非常简单,只需要修改模型实例的属性值,并调用 save() 方法即可。

book = Book.objects.get(title='Python Cookbook')

book.author = 'Alex Martelli'

book.save()

上述代码将书名为 "Python Cookbook" 的记录的作者修改为 "Alex Martelli"。

6. 删除记录

删除记录需要使用模型实例的 delete() 方法。下面是一个示例:

book = Book.objects.get(title='Python Cookbook')

book.delete()

上述代码将删除书名为 "Python Cookbook" 的记录。

7. 总结

通过本文的介绍,您应该已经掌握了使用 Django ORM 对表进行 CRUD 操作的基本方法。让我们来回顾一下:

使用 create() 方法来创建记录

使用 objects.all() 方法获取所有记录,使用 objects.filter() 方法根据条件查询记录

使用模型实例的属性来更新记录,并调用 save() 方法

使用 delete() 方法删除记录

使用 Django ORM,您可以以面向对象的方式来操作数据库,大大简化了数据库操作的过程,提高了开发效率。

后端开发标签