模型使用指南
前言
Django对数据库提供了很好的支持,对不同的数据库,django提供了统一调用的API,我们可以根据不同的业务需求使用不同是数据库。Django中引入了ORM(Objects Relational Mapping)对象关系映射,是一种程序技术。在下面会详细的讲解。
修改mysql配置
1. 在settings.py中配置数据库连接信息
image.png
2. mysql数据库中创建定义的数据库
a) 进入mysql
image.png
b) 创建数据库
image.png
3. 配置数据库链接
a) 安装pymysql
image.png
b) 在工程目录下的init.py文件中输入,完成数据库的驱动加载
image.png
4. 定义模型
重要概念:模型,表,属性,字段
一个模型类在数据库中对应一张表,在模型类中定义的属性,对应模型对照表中的一个字段
定义属性见定义属性文件地址
创建学生模型类
image.png
5.迁移数据库
a) 生成迁移文件
image.png
注意:如果执行后并没有生成迁移文件,一直提示No changes detected这个结果的话,就要手动的去处理了。有两点处理方式:
1) 先删除掉pycache文件夹
2) 直接强制的去执行迁移命令,python manage.py makemigrations xxx (xxx就是app的名称)
3) 查看自动生成的数据库,查看表django_migrations,删掉app字段为xxx的数据(xxx就是app的名称)
b) 执行迁移生成数据库
image.png
注意: 生成迁移文件的时候,并没有在数据库中生成对应的表,而是执行migrate命令之后才会在数据库中生成表
6. ORM
ORM(Objects Relational Mapping)对象关系映射,是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。可以简单理解为翻译机。
image.png
7.模型查询
a) 模型成员objects
Django默认通过模型的objects对象实现模型数据查询
b) 过滤器
查询集表示从数据库获取的对象集合
查询集可以有多个过滤器
过滤器就是一个函数,基于所给的参数限制查询的结果
image.png
多个filter和exclude可以连接在一起查询
当然还有如下这些过滤器:
image.png
c) 查询单个数据
get():返回一个满足条件的对象。如果没有返回符合条件的对象,会应该模型类DoesNotExist异常,如果找到多个,会引发模型类MultiObjectsReturned异常
first():返回查询集中的第一个对象
last():返回查询集中的最后一个对象
count():返回当前查询集中的对象个数
exists():判断查询集中是否有数据,如果有数据返回True,没有返回False
d) 限制查询集
限制查询集,可以使用下表的方法进行限制,等同于sql中的limit
模型名.objects.all()[0:5] 小标不能为负数
e) 字段查询
对sql中的where实现,作为方法,filter(),exclude(),get()的参数
语法:属性名称__比较运算符 = 值
外键:属性名_id
注意:like语句中使用%表示通配符。比如sql语句查询 where name like '%xxx%',等同于filter(name_contains='xxx')
f) 比较运算符
contains:是否包含,大小写敏感
startswith,endswith:以values开头或者结尾,大小写敏感以上的运算符前加上i(ignore)就不区分大小写了
isnull,isnotnull:是否为空。filter(name__isnull=True)
in:是否包含在范围内。filter(id__in=[1,2,3])
gt,gte,lt,lte:大于,大于等于,小于,小于等于。filter(age__gt=10)
pk:代表主键,也就是id。filter(pk=1)
g) 聚合函数
agregate()函数返回聚合函数的值
Avg:平均值
Count:数量
Max:最大
Min:最小
Sum:求和










网友评论