简介:本章主要介绍基于Django模型使用数据库
一、配置数据库信息
以MySQL为例,需要在setting.py文件中找到DATABASES
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 配置为MySQL
'NAME': 'xxx', # 数据库名
'USER': 'xxxx', # 数据库登录账户
'PASSWORD': 'xxxx', # 密码
'HOST': '127.0.0.1', # 数据库ip地址
'PORT': 3306, # 数据库端口号
'OPTIONS':{
"init_command": "set foreign_key_checks = 0;", # 取消外键约束
}
}
需要安装mysqlclient,如果mysqlclient使用pip安装失败就去官网下载
mysqlclient · PyPIPython interface to MySQLhttps://pypi.org/project/mysqlclient/#files

二、用Django中的orm操作数据库
orm的作用为在关系型数据库和业务实体对象之间进行映射,orm对底层进行了封装与隔离,在使用Django开发的项目时,无需关心程序使用的是mysql还是Oracle数据库,在操作具体的数据库时,也无需和复杂的SQL语句打交道,只需要使用orm提供的API操作就行。
每个模型都是一个Python类,每个模型都会映射到一个数据库表上
类:数据库中的数据表
属性:数据库中的字段
实例:数据库表中的数据行
1、创建数据库
首先确保mysql服务是启用中的


创建数据库命令:create database fqq DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

2、使用orm创建表
所有Django模型都必须继承自Model类,Model类位于包django.db.models中。在app目录下的models.py文件中导入models

然后执行如下命令
生成迁移文件:python manage.py makemigrations
执行迁移:python manage.py migrate
然后查看数据库里的表

2、使用orm删除、修改表结构
删除很简单,把models.py文件中对应的类注释掉或者删除,重新执行一下上面的命令就可以了
删除列就删除models.py文件中对应的类里面的属性删掉,重新执行命令就可以了
修改也一样,把类里面对应内容替换掉,重新执行命令
3、使用orm给表增加字段


因为原有的表里字段可能有默认值,所以新加的字段选第一个的话就是让你手动添加一个默认值,第二个选项是退出让你在models.py对应的类中的字段赋予一个默认值,这样才能添加成功。
from django.db import models
# Create your models here.
class UserInfo(models.Model):
name = models.CharField(max_length=30)
password = models.CharField(max_length=50)
age = models.IntegerField()
date = models.IntegerField()
sex = models.CharField(max_length=10, default='男')
email = models.EmailField(max_length=30, default='1234567@qq.com')
# 用下面这种方式也可以,null=True允许数据库中为空,blank=True允许admin后台中为空
# email = models.EmailField(null=True, blank=True)
后面加上default默认值,就可以了


4、增删改查
Django的manage工具提供了shell命令,帮助我们直接在终端中执行测试Python语句。命令如下:python .\manage.py shell
下载一个ipython,IPthon是基于Python默认CPython解释器之上的一个增强的交互式解释器,提供了颜色显示、tab补全、历史机制、集成Python调试器等功能。
pip install ipython

1)新增数据
使用create新增


使用save()新增


2)更新数据
save()方法:


update()方法:


3)删除数据
删除筛选的数据:


删除所有数据:


如果删除的数据有外键字段,且模型中的on_delete参数被设置为CASCADE,则删除外键关联表中的对应数据。
5、QuerySet对象
QuerySet对象也被称为“查询集”,表示从数据库获取的数据对象集合,查询集有一个最重要的特性--惰性执行。
惰性执行是指,在创建查询集后不会访问数据库,只在调用相关方法时才会访问数据库,这些方法包括遍历迭代、系列化等。

1)all()方法
该方法用于获取模型的QuerySet对象,即获取所有的数据

2)filter()方法
该方法用来过滤数据,和sql语句中的where语句类似,获取满足条件的数据并返回一个QuerySet对象,如果没有获取数据,就返回空的QuerySet对象。
语法:模型类.objects.filter(字段=值)

3)get()方法
该方法用于查询数据表记录,以模型对象的形式返回符合要求的一条数据

如果没有记录或者记录超过1条,会出现错误提示,因此需要做异常捕获处理,filter方法则不会出现错误提示
4)exclude()方法
用于排除符合条件的数据,返回QuerySet对象,语法和filter方法一致,方法中还可以使用大于、小于、模糊匹配等操作符
| 操作符 | 含义 | 具体使用 |
| __gt | 大于 | filter(age__gt=20) |
| __gte | 大于或等于 | filter(age__gte=20) |
| __it | 小于 | filter(age__it=20) |
| __ite | 小于或等于 | |
| __in | 在某列表内 | filter(age__in=[10,20] |
| __contains | 模糊匹配 | filter(name__contains='王' |
| __year | 日期字段的年份 | filter(createdate__year=2022) |
| __month | 日期字段的月份 | |
| __day | 日期字段的天数 |
5)values()方法
用于提取需要的字段,返回QuerySet对象,该对象包含的数据类型是由指定的字段和值形成的字典

6)distinct()方法
用于去重,返回一个QuerySet对象


本文介绍了如何在Django项目中配置MySQL数据库,并通过ORM进行表的创建、修改及删除等操作。此外还详细讲解了如何利用ORM进行数据的增删改查。
2183

被折叠的 条评论
为什么被折叠?



