回顾Django MTV

模型层及ORM介绍一_数据库

模型层-负责跟数据库之间进行通信


Django配置mysql

模型层及ORM介绍一_模板_02

模型层及ORM介绍一_模板_03

查看Linux系统是否安装相应的包

apt list --installed|grep -E 'libmysqlclient-dev|python3-dev'

模型层及ORM介绍一_django_04

如果没有则安装

apt-get install default-libmysqlclient-dev python3-dev

然后执行pip安装MySQL相关的库

pip3 install mysqlclient

模型层及ORM介绍一_django_05

查看python环境是否MySQL依赖包

pip3 freeze|grep -i 'mysql'

模型层及ORM介绍一_模板_06

进入下一步

安装好数据库后执行下一步

模型层及ORM介绍一_django_07

第一步:创建数据库

模型层及ORM介绍一_python_08

第二步:配置settings.py

模型层及ORM介绍一_python_09

配置详解

模型层及ORM介绍一_django_10

什么是模型:

1.模型是一个python类,它是由django.db.models.Model派生出子类。

2.一个模型类代表数据库中的一张数据表。

3.模型类中每一个类属性都代表数据库中的一个字段。

4.模型是数据交互的接口,是表示和操作数据库的方法和方式。


ORM框架

定义:

ORM 对象关系映射,它是一种程序技术,它允许你使用类和对象对数据库进行操作,从而避免通过SQL语句操作数据库。

作用:

1.建立模型类和表之间的对应关系,允许我们通过对象的方式来操作数据库。

2.根据设计的模型类生成数据库中的表格。

3.通过简单的配置就可以进行数据库的切换。

优点:

只需要面向对象编程,不需要面向数据库编写代码。

     对数据库的操作都转化成对类属性和方法的操作。

     不用编写各种数据库的sql语句

实现了数据模型与数据库的解耦,屏蔽了不同数据库操作上的差异。

     不在关注用的是某个数据库的内部细节。

     通过简单配置就可以轻松更换数据库,而不需要修改代码

缺点:

    对复杂业务,使用成本较高。

    根据对象的操作转换成SQL语句,根据查询结果转化成对象,在映射过程中有性能损失。

映射图

模型层及ORM介绍一_ORM_11

模型案例:

模型层及ORM介绍一_数据库_12

模型层及ORM介绍一_模板_13

模型层及ORM介绍一_django_14

模型类代码示例:

模型层及ORM介绍一_ORM_15

详解:

模型层及ORM介绍一_模板_16

数据库迁移:

将模型类的表进行创建,这个过程称为数据库迁移。

迁移是Django同步您对模型所作更改(添加字段,删除模型等)到您的数据库模式的方式。

    

模型层及ORM介绍一_数据库_17

模型层及ORM介绍一_模板_18

模型层及ORM介绍一_ORM_19

同步回数据库

迁移前-库是空的

模型层及ORM介绍一_模板_20

迁移后-库是有表的

模型层及ORM介绍一_数据库_21

创建模型类流程

1、创建应用

2、在应用下的models.py中编写模型类

模型层及ORM介绍一_ORM_22

3、迁移同步 :生成迁移文件-makemigrations & 同步到数据库-migrate

4、任何关于表结构的修改,务必在对应的模型类上修改

案例:

    

模型层及ORM介绍一_模板_23

模型层及ORM介绍一_python_24

模型类字段类型

更多字段类型详解参考官方文档

模型字段参考 | Django 文档 | Django

模型层及ORM介绍一_数据库_25

模型层及ORM介绍一_模板_26

模型层及ORM介绍一_python_27

模型层及ORM介绍一_模板_28

模型层及ORM介绍一_ORM_29

模型层及ORM介绍一_模板_30

再创建一个模型类

在bookstore/models.py 应用中 添加 一个模型类

模型层及ORM介绍一_django_31

    

模型层及ORM介绍一_ORM_32

模型类-字段选项

更多字段详解: 模型字段参考 | Django 文档 | Django

模型层及ORM介绍一_django_33

模型层及ORM介绍一_python_34

模型层及ORM介绍一_模板_35

模型层及ORM介绍一_模板_36

Meta类-定义

    使用内部Meta类 来给模型赋予属性,Meta类下有很多内建的类属性,可对模型类做一些控制

模型层及ORM介绍一_python_37

模型层及ORM介绍一_模板_38

练习-修改模型类

模型层及ORM介绍一_python_39

模型层及ORM介绍一_模板_40