目录 Django ORM ORM实操之数据库迁移 ORM实操之字段的修改 ORM实操之数据的增删改查 数据库同步 ORM创建表关系 Django请求生命周期流程图 路由匹配 无名分组 有名分组 反向解析...无名分组和有名分组反向解析 Django ORM ORM:对象映射关系程序 通过orm将编程语言的对象模型和数据库的关系模型建立映射关系,这样我们在使用编程语言对数据库进行操作的时候可以直接使用编程语言的对象模型进行操作就可以了...所需的依赖表,自动创建的 # 自己创建的表user以'应用名_表名'的形式创建,app01_user ✨✨不指定id字段和主键等,ORM会自动创建id # 如果你不指定主键 那么orm会自动帮你创建一个名为...orm操作?...自动补充 ORM自动创建书籍和作者的第三张表,只有多对多关系表被单独创建出来 Django请求生命周期流程图 路由匹配 路由:通俗理解为除去ip和port之后的地址 在新版本Django2.x中
ORM ORM即Object Relational Mapping(对象关系映射) 对象关系映射(英语:(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping...在Django中具体的对应方式为: 类名对应数据库中的表名 类名对应数据库中的表名 类属性对应数据库里的字段 类实例对应数据库表里的一行数据 类实例对象的属性对应这行中的字段的值 一.数据库的连接 Django...} 2.引入pymysql驱动 在init.py文件中加上 import pymysql pymysql.install_as_MySQLdb() 二.表的创建 1.一个简单的创建 数据库表的创建在ORM...True 2.一对一 一对一的创建即在外键创建好后给school_id添加UNIQUE=True的属性 3.多对多 teacher=models.ManyToManyField(teacher) 这样Django...order_by(*field): 对查询结果排序 reverse(): 对查询结果反向排序 distinct(): 从返回结果中剔除重复纪录 values_list(*field): 它与values()非常相似
ORM:(在django中,根据代码中的类自动生成数据库的表也叫--code first) ORM:Object Relational Mapping(关系对象映射) 我们写的类表示数据库中的表 我们根据这个类创建的对象是数据库表里的一行数据...obj.id obj.name.....就是数据库一行数据中的一部分数据 ORM--First: 我们在学习django中的orm的时候,我们可以把一对多,多对多,分为正向和反向查找两种方式。...马上就要开始我们的orm查询之旅!!! 建表+配置url+views中写相应的函数 models.py(在django中仅且只能在这里写数据库的相关类) ?...django的filter方法是从数据库的取得匹配的结果,返回一个对象列表,如果记录不存在的话,它会返回[]。 ? ORM的一对多: 我们在设计表结构的时候什么时候使用一对多呢?...ORM多对多 系统生成第三张表: 多对多和一对多没有任何关系 models.py ?
聚合函数 这里的聚合函数和SQL里的聚合函数对应,在使用前需要先进行模块的导入: from django.db.models import Max,Min,Sum,Count,Avg 常用的聚合函数有求最大值...Django中的事务 还未进行详细讲解 orm字段及参数 常用字段: 字段 描述 AutoField int自增列,必须填入参数 primary_key=True。...- 时间格式 HH:MM[:ss[.uuuuuu]] DurationField(Field) - 长整数,时间间隔,数据库中按照bigint存储,ORM...SmallIntegerField': 'smallint', 'TextField': 'longtext', 'TimeField': 'time', 'UUIDField': 'char(32)', ORM...字段与MySQL字段对应关系 自定义char字段 自定义字段可以使用下面的方法,其实我们也只是更改一下字段的数据长度、字段的名字等,Django中的字段已经很丰富了。
field): 对查询结果排序 reverse(): 对查询结果反向排序 distinct(): 从返回结果中剔除重复纪录 values_list(*field): 它与values()非常相似
通过使用 ORM,我们只需要操作 Author 和 Blog 对象,而不用操作相关的数据库表。这里主要介绍一下 Django ORM 的相关使用。...对象和关系之间并不是完美映射 一般来说 ORM 足以满足我们的需求,如果对性能要求特别高或者查询十分复杂,可以考虑使用原生 SQL 和 ORM 共用的方式 Django ORM 在 Django 框架中集成了...Manager 在创建完 Model 对象之后,Django 会自动为其关联一个 Manager 对象,该对象是 Model 进行数据库操作的接口。...、ManyToManyField,例如下图中的 orm_author 就与多个 orm_blog 实例关联 因此 Django ORM 中的关联查询也分两中 select_related(单关联实例)...aggregate: 针对所有记录调用聚合函数,返回一个 dict 对象,下面是使用示例: from django.db.models import Min from django.db.models
一、orm查询 1.1配置测试脚本 为了方便我们测试SQL语句,我们需要配置一下tests.py文件,在这里测试我们的SQL语句,单独测试Django中的py文件都可以这样配置。...第一种方式: import os if __name__ == "__main__": os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite1....settings") import django django.setup() # 一定要等待测试脚本搭建完毕之后 才能导入django文件进行测试 from app01...import models 第二种方法: 直接新建一个名称任意的py文件,在里面写上上面的配置 1.1.1Django终端打印SQL语句的配置 在settings里面随便找个地方复制下面的代码即可在终端看到...orm向数据库发送的SQL语句。
前言 Django框架功能齐全自带数据库操作功能,本文主要介绍Django的ORM框架 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb...来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行数据库操作 Django orm的优势: Django的orm操作本质上会根据对接的数据库引擎,翻译成对应的sql语句;所有使用Django...,如果数据库迁移,只需要更换Django的数据库引擎即可; 一、Django连接MySQL 1、创建数据库 (注意设置 数据的字符编码) 由于Django自带的orm是data_first类型的ORM,...单表操作 0、orm操作前戏 orm使用方式: orm操作可以使用类实例化,obj.save的方式,也可以使用create()的形式 QuerySet数据类型介绍 QuerySet与惰性机制 所谓惰性机制...连表操作 我们在学习django中的orm的时候,我们可以把一对多,多对多,分为正向和反向查找两种方式。
ORM的劣势 ORM的缺点是会在一定程度上牺牲程序的执行效率。 ORM用多了SQL语句就不会写了,关系数据库相关技能退化... ORM总结 ORM只是一种工具,工具确实能解决一些重复,简单的劳动。...Django连接MySQL数据库 1....在Django项目的settings.py文件中,配置数据库连接信息: DATABASES = { "default": { "ENGINE": "django.db.backends.mysql...在Django项目(注意,项目里的,不是app)的__init__.py文件中写如下代码,告诉Django使用pymysql模块连接MySQL数据库: import pymysql pymysql.install_as_MySQLdb...Django中ORM的(简单)增删改查 增 增加表 下面这个例子定义了一个 Person 模型,包含 first_name 和 last_name。
目录 Django ORM 多表操作 表模型 表关系 创建模型 逆向到表模型 插入数据 ORM 添加数据(添加外键) 一对多(外键 ForeignKey) 一对一 (OneToOneFeild) 多对多...(ManyToManyField):在第三张关系表中新增数据 ORM 修改数据 ORM 删除和清空数据 跨表查询 基于对象的跨表查询 基于双下划线的跨表查询 聚合查询 示例 F查询 Q查询 Django...ORM 多表操作 表模型 图书表 出版社表 作者表 作者详情表 表关系 一对一:一对一推荐建在查询频率高的一方 一对多:外键字段建在多的一方 多对多:外键字段建在查询频率多的一方,在Django第三张表不需要创建...,自动创建 ps:外键字段不需要写表名_id后面的_id,ORM创建的时候自动添加了_id,以及外键以虚拟字段的形式存在 创建模型 '''models.py''' from django.db import...6、若有模型类存在外键,创建数据时,要先创建外键关联的模型类的数据,不然创建包含外键的模型类的数据时,外键的关联模型类的数据会找不到 逆向到表模型 插入数据 ps:插入几条数据方便操作 ORM
addr = models.CharField(max_length=32) author = models.OneToOneField("Author") #建立的一对一的关系 2.orm...字段必须要知道的一些属性 (0)null 如果为True,Django 将用NULL 来在数据库中存储空值。...例如: from django.db import models class Person(models.Model): SHIRT_SIZES = ( (‘S‘, ‘Small...Flintstone", shirt_size="L") >>> p.save() >>> p.shirt_size ‘L‘ >>> p.get_shirt_size_display() ‘Large 3.orm...添加记录,其实重要的是先查到,然后再添加就比较容易了,传说中的三种方式,貌似实际应用中只有save()的方式可以使用,原因无他,只有save()能触发django定义的一些钩子函数,留下数据更改的日志信息
相关命令 python3 manage.py makemigrations 根据模型生成相关迁移文件 python3 manage.py migrate 根据迁移文件,将表结构更新到数据库中,并在Django...这个不是SQL标准的一部分,完全由Django处理。 DO_NOTHING:SQL等价物:NO ACTION。...)) 对应MySQL中的联合唯一约束 app_label 指定模型属于哪个应用(如果在settings里面已经注册过应用的话,就不用写这个字段了) db_tablespace 定义数据库表空间的名字 Django...数据表操作 更改数据表 删除数据库表步骤 删除对应的模型类代码 删除migrationd文件夹下面的模型类 删除Django的migrations表中对应的记录 删除数据库表 导入数据 Django...shell 导入数据 引入模型 调用模型对象的save方法 自己定义一个脚本批量导入数据 fixtures Django serialization -> model 保存 python3 manage.py
from django.shortcuts import render, HttpResponse from app01 import models from app01.models import...Book,Author,Publisher from django.db.models import Avg,Min,Sum,Max def data_oper(req): # 查询每个出版社书的总价...F查询 F 使用查询条件的值,专门取对象中某列值的操作 from django.shortcuts import render, HttpResponse from app01 import models...from app01.models import Book,Author,Publisher from django.db.models import Avg,Min,Sum,Max from django.db.models...import Avg,Min,Sum,Max from django.db.models import F,Q from django.db.models import F,Q # 查询 book
模型是Python中的一个类,它是由django.db.models.Moduel派生出的一个子类 一个模型类就代表数据库中的一张表 模型类中的每一个类的属性都代表数据库中的一个字段 模型是数据交互的接口...,是表示和操作数据库的方法和方式 ORM框架 定义:ORM(Object Relation Mapping)即对象关系映射,它是一种程序技术,它允许你使用类和对象数据库进行操作,从而进行避免通过SQL...也不用关注MySQL、ORACLE…的内部细节 缺点 对于复杂业务,使用成本较高… 根据对象的操作转换成SQL语句,根据查询的结果转化成对象,在映射的过程中有性能损失 世间万物 即无完美 ORM...install python3-devel mysql-devel # 红帽 / CentOS pip install mysqlclient Win用户 在 Windows 上构建 mysqlclient 非常困难...pymysql.install_as_MySQLdb() # 告诉django用pymysql代替mysqldb连接数据库 # 将配置原封不动的写入settings.py DATABASES = {
前言 查找是数据库操作中一个非常重要的技术。查询一般就是使用filter、exclude以及get三个方法来实现。我们可以在调用这些方法的时候传递不同的参数来实现查询需求。...QuerySet.query QuerySet.query:query可以用来查看这个ORM查询语句最终被翻译成的SQL语句。...但是query只能被用在QuerySet对象上,不能用在普通的ORM模型上。...示例代码如下: from django.utils.timezone import make_aware from datetime import datetime start_time = make_aware...根据关联的表进行查询 假如现在有两个ORM模型,一个是Article,一个是Category。
目录 Django ORM 多表操作(二) 多对多操作常用API 分组查询 单表分组查询示例 多表分组查询练习 查询练习 ORM 事务 ORM 常见字段和参数 ORM常见字段 ORM 常见参数 choices...多对多关联关系的三种方式 方式一:自己创建第三张表 方式二:通过ManyToManyFeild自动创建第三张表 方式三:设置ManyTomanyField并指定自行创建的第三张表 元信息 原生sql Django...事务 '''django开启事务''' 导入模块: from django.db import transaction # 示例 from django.db import transaction...常见字段和参数 ORM常见字段 AutoField:int自增列,必须填入参数 primary_key=True。...元信息 ORM对应的类里面包含另一个Meta类,而Meta类封装了一些数据库的信息。
目录 Django ORM单表操作 Django 测试环境搭建 ORM 创建表 ORM 添加数据 ORM 查询数据 all 查询 filter 查询 exclude 取反查询 get 查询 order_by...ORM 修改数据 ORM 逆转到 SQL Django ORM单表操作 Django 测试环境搭建 注意pycharm链接数据库都需要提前下载对应的驱动,自带的sqlite3对日期格式数据不敏感,...", "day06.settings") import django django.setup() 直接使用pycharm提供的python console ORM 创建表 # Mysql...配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'orm_simple..., admin.site.urls), path('book/', views.book), ] ORM 添加数据 有两种添加数据的方式: 方式一:模型类实例化对象 方式二:通过 ORM
ORM 查询操作 修改 views.py 文件 from django.shortcuts import render, HttpResponse from app01 import models from...from django.shortcuts import render, HttpResponse from app01 import models from app01.models import...ORM 删除操作 修改 views.py 文件 from django.shortcuts import render, HttpResponse from app01 import models from...id 为 1 的记录 models.Book.objects.filter(id=1).delete() return HttpResponse("Hello world") ORM...更新操作 修改 views.py 文件 from django.shortcuts import render, HttpResponse from app01 import models from
ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列model的实例化对象,而是一个可迭代的字典序列 values_list(*field): 它与values()非常相似...如:把所有书名后面加上(第一版) >>> from django.db.models.functions import Concat >>> from django.db.models import Value...", "BMS.settings") import django django.setup() import datetime from app01 import models...ORM执行原生的SQL # extra # 在QuerySet的基础上继续执行子语句 # extra(self, select=None, where=None, params=None, tables...") import django django.setup() from app01 import models books = models.Book.objects.all
所以我们采用ORM模型 ORM模型介绍 orm全称Object Relational Mapping,中文叫做对象关系映射,通过ORM我们可以通过类的方式去操作数据库,而不用再写原生的SQL语句。...通过把表映射成类,把行作实例,把字段作为属性,ORM在执行对象操作的时候最终还是会把对应的操作转换为数据库原生语句 ORM的优点 易用性:使用ORM做数据库的开发可以有效的减少重复SQL语句的概率,...性能损耗小:ORM转换成底层数据库操作指令确实会有一些开销。...可移植性:Django封装了底层的数据库实现,支持多个关系数据库引擎,包括流行的MySQL、Oracle、PostgreSQL和SQLite。可以非常轻松的切换数据库。...ORM的实现过程 (1)配置目标数据库,在setting.py中设置配置属性 (2)构建虚拟对象数据库,在App的model.py文件中以类的形式定义模型 (3)通过模型在目标数据库中创建对象的数据表
领取专属 10元无门槛券
手把手带您无忧上云