Loading

9-模型层及ORM介绍

一、模型层
模型层负责和数据库之间进行通信
 
 
二、Django配置mysql数据库
1.Django默认的数据库是sqllite3,将其更改为mysql数据库需要进行对应配置
1.安装mysqlclient [版本1.3.13以上]
pip3 install mysqlclient (有一些其他依赖需要安装,可能会报错)
 
2.也可以使用pymysql pip3 install 无依赖 ,可以选一种使用
 
 
2.创建数据库
进入mysql数据库
create database 数据库名 default charset utf8
通常数据库名与项目名保持一致
settings.py里进行数据库配置
修改DATABASES配置项内容 由sqllite3变为mysql
ENGINE:django.db.backends.sqllite 将sqllite改为mysql
#新增数据库配置  
'NAME':'数据库名',
'USER':'数据库连接用户',
'PASSWORD':'密码',
'HOST':'连接地址'
'POST':'端口'

 

 
三、什么是模型
模型是一个Python类,他是由Django.db.models.Model派生出的子类, 类继承了models.Model,他就是一个模型
一个模型类代表数据库中的一张表
模型类中每一个类属性都代表数据库中的一个字段
模型是数据交互的接口,是表示和操作数据库的方法和方式
 
四、ORM框架
1.定义:ORM (object relational mapping) 即对象关系映射,它是一种程序技术,允许你使用类和对象对数据库进行操作,
从而避免通过sql语句操作数据库
 
2.作用
1.建立模型类和表直接对对应关系,允许我们通过面向对象的方式来操作数据库
2.根据设计的模型类生成数据库中的表格
3.通过简单的配置就可以进行数据库的切换
 
3.优点
1.只需要面相对象编程,不需要面相数据库编写代码
对数据库的操作都转换成对类属性和方法的操作
不用编写各种数据库的sql语句
 
2.实现了数据模型与数据库的解耦,屏蔽了不同数据库操作上的差异
不在关注是mysql、oracle等数据库等内部细节
通过简单的配置就可以更换数据库,而不需要修改代码
 
4.缺点
1.对于复杂业务,使用成本较高
2.根据对象的操作转换SQL语句,根据查询的结果转换对象,在映射过程中有性能损失
 
 
 
五、模型示例
1.代码格式
  在models.py里面导导包:from django.db import models

  class class_name(models.Model):
            字段名 = models.字段类型(字段选项)

 

 
示例:创建一个 Book,添加名字和价格字段
模型类=数据库表,类属性=数据库字段
 
 
第一个中文字符串是传递给verbose_name / . verbose_name = 'name' 用于admin后台显示字段信息
 
六、数据库迁移
迁移时Django同步对模型所做更改(添加字段、删除模型等)到数据库模式到方式
 
1.生成迁移文件 -执行 python3 manage.py makemigrations
   将应用下models.py文件生成一个中间文件,保存在应用的migrations文件夹中

2.执行迁移脚本程序 -执行 。 python3 manage.py migrate
   执行迁移程序实现迁移,将每个应用下的migrations目录中的中间文件,同步到数据库

 

 
1.生成的中间文件
2.会将对应数据推送到到数据库,生成的数据库表名 格式 应用名 + 类名(小写)
 

posted @ 2022-01-12 11:29  木子七  阅读(220)  评论(0编辑  收藏  举报