Django的数据库连接及操作 (django 数据库)
Django 是一款非常流行的 Python web 框架,它提供了一种高效、灵活、易于使用的方式来构建 Web 应用程序。Django 中自带的 ORM(Object-Relational Mapping)工具能够让程序员轻松地创建和管理数据库,而不需要手动写 SQL。在本文中,我们将深入探讨 Django 的数据库连接及操作,介绍如何使用 Django 的 ORM 创建、插入、更新和删除数据等操作。
一、Django 的数据库连接
Django 的 ORM 工具支持多种数据库,包括 PostgreSQL、MySQL、Oracle 和 SQLite 等。Django 的 ORM 工具提供了一个统一的接口,可以在不同的数据库系统之间切换,而且不需要修改任何代码。在配置 Django 框架使用的数据库之前,需要在项目的 settings.py 文件中设置 DATABASES 变量。例如:
“`
DATABASES = {
‘default’: {
‘ENGINE’: ‘django.db.backends.mysql’,
‘NAME’: ‘mydatabase’,
‘USER’: ‘mydatabaseuser’,
‘PASSWORD’: ‘mypassword’,
‘HOST’: ‘localhost’,
‘PORT’: ‘3306’,
}
}
“`
这里我们使用 MySQL 数据库作为例子,其中 ENGINE 变量指定了使用的数据库引擎。 在这个例子中,我们使用 mysql 数据库引擎连接名为 mydatabase 的数据库,连接用户名为 mydatabaseuser,密码为 mypassword,连接地址为 localhost,连接端口为 3306。需要根据实际情况进行修改。
二、Django 的数据库操作
2.1 创建数据库表
Django 的 ORM 工具可以根据 models.py 文件自动创建数据库表。在 models.py 文件中定义的类表现为数据库中的一个表,类中的每个属性对应着数据库表中的一列。Django 还提供了一些字段类型,如 BooleanField、CharField、DateField 等,这些字段可以指定表的列名、数据类型以及其他有用的参数。
例如,我们定义一个名为 Student 的模型类:
“`
from django.db import models
class Student(models.Model):
student_id = models.CharField(max_length=20, unique=True)
name = models.CharField(max_length=50)
age = models.IntegerField()
gender = models.CharField(max_length=10)
grade = models.CharField(max_length=10)
“`
这个模型类对应着一个名为 Student 的数据库表,表中有 student_id、name、age、gender、grade 这 5 个列,每个列的数据类型已在代码中定义。
要在数据库中创建这个表格,需要在控制台中输入以下命令:
“`
python manage.py makemigrations
python manage.py migrate
“`
其中 makemigrations 命令会根据 models.py 文件创建迁移文件,并存储在 migrations 文件夹中;migrate 命令会应用这些迁移文件。
2.2 插入数据
ORM 工具提供了一个 save() 方法,可以将新的数据对象保存到数据库中:
“`
student = Student(student_id=’20230001′, name=’Tom’, age=18, gender=’male’, grade=’2023′)
student.save()
“`
其中 student_id 是该条数据的主键,因此需要设置为唯一。
2.3 更新数据
ORM 工具还提供了一个 update() 方法,用于更新已有的数据:
“`
student = Student.objects.filter(name=’Tom’).first()
student.age = 20
student.save()
“`
这个例子中,我们先使用 filter() 方法获取 name 为 ‘Tom’ 的学生,然后将其 age 属性更新为 20,最后调用 save() 方法保存修改。
2.4 删除数据
ORM 工具提供了一个 delete() 方法,可以删除指定的数据对象:
“`
student = Student.objects.filter(name=’Tom’).first()
student.delete()
“`
这里我们删除了名字为 ‘Tom’ 的学生数据。
2.5 查询数据
ORM 工具提供了丰富的查询方法,如 filter()、exclude()、get()、all() 等等,可以根据不同的条件查询数据。例如:
“`
# 查询全部学生的数据
students = Student.objects.all()
# 查询性别为女性的学生
students = Student.objects.filter(gender=’female’)
# 查询年龄在 18 到 20 之间的学生
students = Student.objects.filter(age__range=(18, 20))
“`
这里使用 filter() 方法查询数据,其中 __range 表示取值范围。返回的结果是一个 QuerySet 对象,可以对其中的数据进行操作。
三、
Django 的 ORM 工具为我们带来了许多便利,可以使用 Python 代码管理和查询数据库,降低了开发复杂 Web 应用的难度。在实际开发中,我们可以从配置数据库连接开始,快速地使用 Django 的 ORM 工具进行数据库操作,提高开发效率。