Django ORM - 单表实例学习笔记

1. 什么是 Django ORM

Django ORM(Object-Relational Mapping)是 Django 框架中的一个重要组成部分,它提供了一个便捷的方式来操作数据库。它将数据库模型映射到 Python 对象上,让我们可以使用 Python 语言来操作数据库,而不需要直接编写 SQL 语句。

2. 如何定义模型类

在 Django ORM 中,每个数据库表都需要对应一个模型类,这个模型类需要继承自 django.db.models.Model 并且定义相应的字段。比如,我们定义一个名为 Person 的模型类,其包含三个字段:nameageemail

pythonCopy Code
from django.db import models class Person(models.Model): name = models.CharField(max_length=30) age = models.IntegerField() email = models.EmailField()

上面代码中,models.CharField 表示一个字符串类型字段,models.IntegerField 表示一个整数类型字段,models.EmailField 表示一个电子邮件类型字段。

3. 如何进行基本操作

通过定义好的模型类,我们可以很方便地进行数据库的增删改查等操作。下面以 Person 模型类为例,介绍一些常用的操作方法。

插入数据

我们可以通过创建一个模型对象并调用 save 方法,将其插入到数据库中。例如,我们以下面的代码将一个名为 Tom 的人插入到数据库中。

pythonCopy Code
p = Person(name='Tom', age=20, email='tom@example.com') p.save()

查询数据

我们可以使用 objects.all() 方法查询该模型类对应的所有记录,或者使用 filter 方法进行条件查询。例如,我们以下面的代码查询年龄大于 18 岁的所有人。

pythonCopy Code
persons = Person.objects.filter(age__gt=18) for person in persons: print(person.name)

更新数据

我们可以通过先查询出需要更新的对象并修改其属性值,然后调用 save 方法实现数据的更新。例如,我们以下面的代码将名字为 Tom 的人邮箱地址修改为 new_tom@example.com

pythonCopy Code
p = Person.objects.get(name='Tom') p.email = 'new_tom@example.com' p.save()

删除数据

我们可以通过先查询出需要删除的对象并调用 delete 方法实现数据的删除。例如,我们以下面的代码将名字为 Tom 的人从数据库中删除。

pythonCopy Code
Person.objects.filter(name='Tom').delete()

4. 示例代码

以下是一个完整的示例代码,展示了如何定义一个模型类、插入数据、查询数据、更新数据和删除数据等基本操作。

pythonCopy Code
from django.db import models class Person(models.Model): name = models.CharField(max_length=30) age = models.IntegerField() email = models.EmailField() # 插入数据 p1 = Person(name='Tom', age=20, email='tom@example.com') p1.save() # 查询数据 persons = Person.objects.filter(age__gt=18) for person in persons: print(person.name) # 更新数据 p2 = Person.objects.get(name='Tom') p2.email = 'new_tom@example.com' p2.save() # 删除数据 Person.objects.filter(name='Tom').delete()

通过上面的示例代码,我们可以看到 Django ORM 提供了很方便的操作方法,使得我们更加容易地操作数据库。