Django ORM - 单表实例学习笔记
1. 什么是 Django ORM
Django ORM(Object-Relational Mapping)是 Django 框架中的一个重要组成部分,它提供了一个便捷的方式来操作数据库。它将数据库模型映射到 Python 对象上,让我们可以使用 Python 语言来操作数据库,而不需要直接编写 SQL 语句。
2. 如何定义模型类
在 Django ORM 中,每个数据库表都需要对应一个模型类,这个模型类需要继承自 django.db.models.Model
并且定义相应的字段。比如,我们定义一个名为 Person
的模型类,其包含三个字段:name
,age
和 email
。
pythonCopy Codefrom 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 Codep = Person(name='Tom', age=20, email='tom@example.com')
p.save()
查询数据
我们可以使用 objects.all()
方法查询该模型类对应的所有记录,或者使用 filter
方法进行条件查询。例如,我们以下面的代码查询年龄大于 18 岁的所有人。
pythonCopy Codepersons = Person.objects.filter(age__gt=18)
for person in persons:
print(person.name)
更新数据
我们可以通过先查询出需要更新的对象并修改其属性值,然后调用 save
方法实现数据的更新。例如,我们以下面的代码将名字为 Tom
的人邮箱地址修改为 new_tom@example.com
。
pythonCopy Codep = Person.objects.get(name='Tom')
p.email = 'new_tom@example.com'
p.save()
删除数据
我们可以通过先查询出需要删除的对象并调用 delete
方法实现数据的删除。例如,我们以下面的代码将名字为 Tom
的人从数据库中删除。
pythonCopy CodePerson.objects.filter(name='Tom').delete()
4. 示例代码
以下是一个完整的示例代码,展示了如何定义一个模型类、插入数据、查询数据、更新数据和删除数据等基本操作。
pythonCopy Codefrom 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 提供了很方便的操作方法,使得我们更加容易地操作数据库。