Django之模型ORM

Object Relational Mapping(ORM)

ORM介绍

ORM概念

对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。

简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。

ORM在业务逻辑层和数据库层之间充当了桥梁的作用。

ORM由来

让我们从O/R开始。字母O起源于"对象"(Object),而R则来自于"关系"(Relational)。

几乎所有的软件开发过程中都会涉及到对象和关系数据库。在用户层面和业务逻辑层面,我们是面向对象的。当对象的信息发生变化的时候,我们就需要把对象的信息保存在关系数据库中。

按照之前的方式来进行开发就会出现程序员会在自己的业务逻辑代码中夹杂很多SQL语句用来增加、读取、修改、删除相关数据,而这些代码通常都是重复的。

ORM的优势

ORM解决的主要问题是对象和关系的映射。它通常把一个类和一个表一一对应,类的每个实例对应表中的一条记录,类的每个属性对应表中的每个字段。

ORM提供了对数据库的映射,不用直接编写SQL代码,只需像操作对象一样从数据库操作数据。

让软件开发人员专注于业务逻辑的处理,提高了开发效率。

ORM的劣势

ORM的缺点是会在一定程度上牺牲程序的执行效率。

ORM用多了SQL语句就不会写了,关系数据库相关技能退化...

ORM总结

ORM只是一种工具,工具确实能解决一些重复,简单的劳动。这是不可否认的。

但我们不能指望某个工具能一劳永逸地解决所有问题,一些特殊问题还是需要特殊处理的。

但是在整个软件开发过程中需要特殊处理的情况应该都是很少的,否则所谓的工具也就失去了它存在的意义。

Django中的ORM

Model

在Django中model是你数据的单一、明确的信息来源。它包含了你存储的数据的重要字段和行为。通常,一个模型(model)映射到一个数据库表,

基本情况:

  • 每个模型都是一个Python类,它是django.db.models.Model的子类。
  • 模型的每个属性都代表一个数据库字段。
  • 综上所述,Django为您提供了一个自动生成的数据库访问API,详询官方文档链接

创建一个ORM过程

总结详细步骤:
        1. 手动创建数据库
        2. 在app/models.py里面写上一个类,必须继承models.Model这个类 (注意启动Django项目)
        3. 在Django 项目的settings.py 里面 配置上数据库的相关信息
        4. 在Django项目里的__init__.py里面写上 两句话 import pymysql pymysql.install_as_MySQLdb()
        5. 给Django发布命令
            1. python manage.py makemigrations  # 相当于去你的models.py 里面看一下有没有改动
            2. python manage.py migrate  # 把改动翻译成SQL语句,然后去数据库执行

        models.py  -->  Django翻译成SQL --> pymysql  --> MySQL(4p)

总结一下:

models.py                      MySQL
类         对应         数据表
类的属性        对应        数据库里面的字段(列)
对象           对应        一行数据(一条数据)

ORM到底是什么? --> 对象关系映射

ORM操作

# 增
1. models.Tb1(表名).objects.create(c1=‘xx‘, c2=‘oo‘)   # 增加一条数据,可以接受字典类型数据 **kwargs
  models.Tb1(表名).objects.create(**{})
2.obj = models.Tb1(c1=‘xx‘, c2=‘oo‘)
obj.save()

# 查
models.Tb1.objects.get(id=123)  # 获取单条数据,不存在则报错(不建议)
models.Tb1.objects.all()  # 获取全部
models.Tb1.objects.filter(name=‘seven‘)  # 获取指定条件的数据  ,不满足条件不报错,但是返回的结果是一个对象的列表

 models.User.objects.filter().first()  # 获取指定条件的数据 ,的第一个

models.User.objects.filter().last()# 获取指定条件的数据,的最后一个

models.Tb1.objects.exclude(name=‘seven‘)  # 去除指定条件的数据

# 删
# models.Tb1.objects.filter(name=‘seven‘).delete()  # 删除指定条件的数据

# 改
1.models.Tb1.objects.filter(name=‘seven‘).update(gender=‘0‘)   # 将指定条件的数据更新,均支持 **kwargs

2. obj = models.Tb1.objects.get(id=1)
  obj.c1 = ‘111‘
  obj.save()   # 修改单条数据

原文地址:https://www.cnblogs.com/caochao-/p/8318443.html

时间: 2024-08-28 14:38:46

Django之模型ORM的相关文章

Django之模型---ORM简介

ORM ORM,是"对象-关系-映射"的简称,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的工作量,不需要面对因数据库变更而导致的无效劳动. 创建表/模型 创建项目,在models.py下创建表 1 from django.db import models 2 3 # Create your models here. 4 5 6 class Book(models.Model): 7 id=mode

django的模型类管理器-----------数据库操作的封装

模型实例方法 str():在将对象转换成字符串时会被调用. save():将模型对象保存到数据表中,ORM框架会转换成对应的insert或update语句. delete():将模型对象从数据表中删除,ORM框架会转换成对应的delete语句. 模型类的属性 属性objects:管理器,是Manager类型的对象,用于与数据库进行交互. 当没有为模型类定义管理器时,Django会为模型类生成一个名为objects的管理器,自定义管理器后,Django不再生成默认管理器objects. 管理器是D

django之数据库orm

django之数据库orm 一.数据库的配置 1 django默认支持sqlite,mysql, oracle,postgresql数据库. <1>sqlite django默认使用sqlite的数据库,默认自带sqlite的数据库驱动 引擎名称:django.db.backends.sqlite3 <2>mysql 引擎名称:django.db.backends.mysql 2 mysql驱动程序 MySQLdb(mysql python) mysqlclient MySQL P

Django框架-模型层

Django框架-模型层 一.单表查询之必知必会13条 1.时间字段中的两个关键性参数 create_time = models.DateField() # 年月日 create_time = models.DateTimeField() # 年月日时分秒 # 两个关键性参数 # auto_now:每次操作数据 都会自动刷新当前操作的时间 # auto_now_add:在创建数据的时候 会自动将创建时间记录下来 后续的修改不会影响该字段 2.搭建测试环境 在django中,你可以写一个单独测试某

Django之模型层第二篇:多表操作

Django之模型层第二篇:多表操作 一 表关系回顾 ? 在讲解MySQL时,我们提到,把应用程序的所有数据都放在一张表里是极不合理的. ? 比如我们开发一个员工管理系统,在数据库里只创建一张员工信息表,该表有四个字段:工号.姓名.部门名.部门职能描述,此时若公司有1万名员工,但只有3个部门,因为每一名员工后都需要跟着部门信息(部门名.部门职能),所以将会导致部门信息出现大量重复.浪费空间. ? 解决方法就是将数据存放于不同的表中,然后基于foreign key建立表之间的关联关系. ? 细说的

1122 django属性操作orm字段数据操作

目录 1. 静态文件的配置 手动静态文件的访问资源 静态文件的动态绑定 2.request方法 2.1 请求方式 2.2 获取前端的请求方式 request.method 2.3 request方法 request.method request.POST request.GET .get方法 3. pycharm连接MySQL 4. django连接MySQL数据库 4.1.配置文件配置 4.2.指定使用的数据库连接模块 5.django orm简介 5.1 基本概念 1. orm对象关系映射

django框架基础-ORM操作-长期维护-20191213

###############    ORM介绍和使用mysql的基本配置    ################ # ORM简介 # O是object,对象 # R是relation,关系,这是关系数据库中的表 # M是mapping,映射 # 在django里面主要是在models.py文件里面设计模型类, ########################### # ORM另一个作用:根据设计的类生成数据库中的表 # django中使用ORM创建表 # 这种可以使用写Python语句,然后自

Python/Django(CBA/FBA/ORM操作)

Python/Django(CBA/FBA/ORM操作) CBA:url对应的类(模式) 1 ##====================================CBA操作============================ 2 3 # class geting(View): 4 # def dispatch(self, request, *args, **kwargs): 5 # print('before') 6 # obj = super(geting,self).dispat

django修改模型后更新数据库

当django改变模型过后,需要重新更新数据库,更新方法如下 比如app的名字是rango python manage.py makemigrations rango(创建迁移脚本)  然后运行  python manage.py migrate