0
点赞
收藏
分享

微信扫一扫

前端不同架构的分层设计

紫荆峰 2023-12-19 阅读 34

Web框架之Django三

学习目标和内容

一、ORM概念

1、ORM介绍

==对象关系映射== 用于实现面向对象编程语言里不同类型系统数据之间的转换。

其就是==使用面向对象的方式==,==操作数据库进行表管理和增删改查操作==等。

2、ORM的作用和优点

Django中的对ORM进行封装,对接数据库引擎,执行对应的SQL语句。

使用者无需关心数据库引擎具体实现的软件(Mysql,sqlite......)。重点把握业务逻辑实现即可。之后如果数据库软件更换需要迁移,直接修改相关配置即可。

二、ORM建表

1、映射关系

在Django框架中,通过ORM模型进行数据库的管理和操作。

通过Python代码,Django的ORM模型将代码转为SQL语句,操作数据库。

以下为对应关系:

2、创建模型(表定义)

创建一个app03应用,模型代码的学习

①进入命令行

②执行创建新应用

创建一张表,只需在应用下的==model.py==中定义对应的类模型即可。==继承models.Model==。

更多类型参考:

Model field reference | Django documentation | Django

https://docs.djangoproject.com/en/1.11/ref/models/fields/#django.db.models.CharField

例:编写一个类模型

3、字段属性

字段属性,用来限定字段的最大长度,Null值,默认值,主键,唯一性,备注等信息。

更多属性参考:Model field reference | Django documentation | Django

根据提供的字段属性,设置合适的字段属性

4、模型元数据(可选)

模型元数据是“任何不是字段的数据”,比如排序选项(ordering),数据库表名(db_table)。在模型中添加class Meta是完全可选的,所有选项都不是必须的。

Meta选项参数:

5、迁移数据库(同步)

创建和迁移数据库表,一般执行两个步骤

①进入操作命令行

②执行makegrations命令,创建迁移文件

Tip:如果遇到以下问题

需要在settings.py 配置

生成的migration迁移文件

③执行migrate迁移命令

以上操作就完成了Django中ORM模型。数据表的创建和修改已经完成。

6、更换数据库

在Django框架中,默认提供了sqllite数据库,进行开发和调试。

实际业务环境中,可以选择为业务数据库,比如说MySQL

###6.1、windows安装mysql

①获取软件包

②解压并部署到一个目录

③配合环境变量

添加MySQL的安装路径bin目录下

配置环境变量后的效果

④安装并启动MySQL服务

对于服务安装和卸载,都是需要使用cmd的管理员模式,否则没有权限

右键启动服务

删除匿名用户(防止远程登录的问题)

以上完成了windows下MySQL服务器的部署

###6.2、Django配置使用MySQL

①修改settings.py配置

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '',    #你的数据库名称 数据库需要自己提前建好
        'USER': '',   #你的数据库用户名
        'PASSWORD': '', #你的数据库密码
        'HOST': '', #你的数据库主机,留空默认为localhost
        'PORT': '3306', #你的数据库端口
        'OPTIONS': {
            "init_command": "SET sql_mode='STRICT_TRANS_TABLES'",
        }
    }
}

②使用MySQL创建数据库

MySQL的数据库需要提前创建,注意字符编码,统一为uf8

CREATE DATABASE 库名 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

③重新执行数据库迁移操作

cmd > pip install pymysql

在初始化文件中,导入mysql包

再次执行迁移,查看数据库表

简单查看数据表及其结构

三、ORM操作

Making queries | Django documentation | Django

1、添加数据

Django 使用一种直观的方式把数据库表中的数据表示成Python 对象:一个模型类代表数据库中的一个表,一个模型类的实例代表这个数据库表中的一条特定的记录。

使用关键字参数实例化模型实例来创建一个对象,然后调用==save()== 把它保存到数据库中。

也可以使用一条语句创建并保存一个对象,使用==create()==方法

定义url路由

在视图中导入模型类

(1)save

或者

(2)create

(3)create可以传入关键字参数kwargs

2、查询数据

(1)all方法

查询全部数据

Tip:模型类中定义返回的字段内容

(2)get方法

只取出一条数据,返回的是一个数据对象,如果查询的数据有多条或者没有都会抛出异常。

(3)==filter方法==

返回的是一个Queryset,即使只查出一条数据,也是一个Queryset。查询的数据没有也是一个空的Queryset。Queryset其实跟列表类似,列表的切片Queryset也可以使用。

(4)exclude方法

exclude 排除满足条件的,返回其他的

select * from hostlist where status != 1

(5)values方法

select * from hostlist

select hostname,ip from hostlist

values方法提供了,查询需要显示的字段筛选。

如果需要显示多个字段,可以使用以下写法

3、更新数据

(1)操作对象的方式更新

我们先找到我们需要更新的数据,然后直接调用属性更改,最后save保存就可以了。

(2)使用update的方式修改数据(推荐)

4、删除数据

使用delete方法删除数据

5、ORM内置查询字段

使用__关键查询字段 双下划线

四、ORM关联关系

运动会

一对一 一个运动员对应一个号码

多对一(一对多) 一个代表队可以被多个运动员申报

多对多 多个运动员可以报多个项目

1、多对一

多对一 就是一个对多个的关系。

比如:==一本书只能对应一个出版社,而一个出版社可以出版多本书==,这样就是==多对一的关系==。

多对一的关系,主要是通过主键和外键进行关联的。

在Django的ORM模型中,使用ForeignKey定义一对多的关系。

①创建模型一对多关系

创建模型后,同步数据生成数据表

查看创建的数据表结构

②多对一关系操作

添加数据 注意需要先添加一的关系,才能够添加多的关系。也就是此例中,先添加出版社,才可以添加图书。顺序和关联的先后,需要处理清楚。

先添加出版社信息

再添加图书信息

查询数据

通过书名称查询属于哪个出版社出版的 正向查询

通过出版社名称 查询出所有的该出版社出版的书籍 反向查询 对象实例_set

删除数据 删除出版社

当出版社删除后,对应的外键关系 图书也就跟着删除了 这是默认Django 多对一模型实现的

实际操作中:

如果在mysql中,图书属于某个出版社,这个出版社是不能够删除的

##2、多对多

比如:==一本书可以多个作者合作编写,一个作者也可以编写多本书==,这样就是==多对多的关系==。

在Django的ORM模型中,使用ManyToManyField定义一对多的关系。


举报

相关推荐

0 条评论