一、模型层
模型层负责和数据库之间进行通信
 
 
二、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.会将对应数据推送到到数据库,生成的数据库表名 格式 应用名 + 类名(小写)
 

9-模型层及ORM介绍的更多相关文章

  1. Django模型层之ORM

    Django模型层之ORM操作 一 ORM简介 我们在使用Django框架开发web应用的过程中,不可避免地会涉及到数据的管理操作(如增.删.改.查),而一旦谈到数据的管理操作,就需要用到数据库管理软 ...

  2. 六、模型层(ORM)

    六.模型层(ORM) Django中内嵌了ORM框架,不需要直接编写SQL语句进行数据库操作,而是通过定义模型类,操作模型类来完成对数据库中表的增删改查和创建等操作. O是object,也就类对象的意 ...

  3. 模型层之ORM、数据库和单表操作

    一.ORM简介 ORM是“对象-关系-映射”的简称,一般指持久化数据和实体对象的映射 1.1 什么是“持久化” 持久(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中( ...

  4. 8 Django 模型层(1)--orm简介

    ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的 ...

  5. Django中模型层中ORM的单表操作

    ORM概念: MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员 ...

  6. django 模型层(orm)05

    目录 配置测试脚本 django ORM基本操作 增删改查 Django 终端打印SQL语句 13条基本查询操作 双下滑线查询 表查询 建表 一对多字段数据的增删改查 多对多字段数据的增删改查 基于对 ...

  7. Django中模型层中ORM的多表操作

    ORM的多表创建(一对一.一对多,多对多): 1模型创建 实例:我们来假定下面这些概念,字段和关系 作者模型:一个作者有姓名和年龄. 作者详细模型:把作者的详情放到详情表,包含生日,手机号,家庭住址等 ...

  8. Django之模型层-了解ORM

    ORM(对象-关系-映射)简单使用 ORM实现了数据模型与数据库的解耦合,即数据模型的设计不需要指定特定的数据库,通过python代码可以直接对数据库实现增删改查 MySQL语法 #sql中的表 #创 ...

  9. (day53)五、模型层(ORM)、settings文件配置

    目录 一.settings配置 (一)测试文件配置 (二)查看对应sql语句 二.模型表数据的增删改查 (一)创建数据 (1)create方法 (2)利用对象的绑定方法 (二)修改数据 (1)利用qu ...

随机推荐

  1. 论语音社交视频直播平台与 Apache DolphinScheduler 的适配度有多高

    在 Apache DolphinScheduler& Apache ShenYu(Incubating) Meetup 上,YY 直播 软件工程师 袁丙泽 为我们分享了<YY直播基于Ap ...

  2. 【Java面试】什么是IO的多路复用机制?

    "什么是IO的多路复用机制?" 这是一道年薪50W的面试题,很遗憾,99%的人都回答不出来. 大家好,我是Mic,一个工作了14年的Java程序员. 今天,给大家分享一道网络IO的 ...

  3. 记一次 ClickHouse 性能测试

    前言 在工作场景中,我们会采集工厂设备数据用于智能控制,数据的存储用了 InfluxDB,随着数据规模越来越大,InfluxDB 的性能越来越差,故考虑引入 ClickHouse 分担 InfluxD ...

  4. [HFCTF2020]EasyLogin-1|JWT身份伪造

    1.打开之后只有一个登陆界面和注册界面,右键检查发现app.js代码,结果如下: app.js代码如下: /** * 或许该用 koa-static 来处理静态文件 * 路径该怎么配置?不管了先填个根 ...

  5. 根节点选择器和 html 选择器

    CSS 中除了用标签选择器选中<html>标签以外还有一个等价的是:root选择器.CSS 变量是有作用域的,全局变量都可以声明在<html>里. <div class= ...

  6. Mysql 一主一从

    1. 主从原理 1.1 主从介绍 所谓 mysql 主从就是建立两个完全一样的数据库,其中一个为主要使用的数据库,另一个为次要的数据库,一般在企业中,存放比较重要的数据的数据库服务器需要配置主从,这样 ...

  7. docker commit镜像

    commit镜像 docker commit 从容器创建一个新的镜像. docker commit 提交容器副本使之成为一个新的镜像 #语法 docker commit -m="提交的描述信 ...

  8. KingbaseES V8R6备份恢复案例之---同一数据库创建不同stanza备份

    案例说明: 在生产环境,有的应用需要调用数据库的sys_rman做备份,为了区分数据库自身的sys_rman备份和应用的备份,可以使用不同的stanza name创建备份.本案例介绍了,如何在King ...

  9. KingbaseES 逻辑备份还原加密

    KingbaseEs 支持在sys_dump备份时使用key进行加密.在sys_restore时,如果没提供key,或者key值不对,将无法进行恢复. [kingbase@dbhost03 ~]$ s ...

  10. 让Python更优雅更易读(第二集)

    友情链接 让Python更优雅更易读(第一集) 1.装饰器 1.1装饰器特别适合用来实现以下功能 运行时校验:在执行阶段进行特定校验,当校验通不过时终止执行. 适合原因:装饰器可以方便地在函数执行前介 ...