美文网首页
模型使用指南

模型使用指南

作者: 嗨_小罗哥 | 来源:发表于2018-09-19 08:48 被阅读0次

模型使用指南

前言

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:求和

相关文章

网友评论

      本文标题:模型使用指南

      本文链接:https://www.haomeiwen.com/subject/ipsbnftx.html