首先orm是什么?

orm-------->对象关系映射

专业性解释网上一大推,随便搜搜就能了解大概。
在我理解(通俗):一个类 ----- 数据库中一张表
类属性 ----- 数据表中的字段名
实例一个对象 --- 表里的一条记录 orm的原理现在还没搞懂,它是具体怎么实现的,大概就是将python语句进行转换,转换成spl语句,原理就是执行sql语句
后面我会继续更新orm。
下面大概简单的记录下它的用法!
orm一般在app文件夹中的models.py文件书写
写一个类,其类名就是那张表的名字,但是django会给你进行封装,将APP01_类名去命名,
单单写一个类是完全不行的,必须继承 models.Model 这个类才行,继续它你就可以使用基类的一个方法。
下面我简单写一个用户表,写写注释 class User(models.Model): ##AutoField代表自增字段(数据库中int),primary_key 主键
id = models.AutoField(primary_key=True) ##CharField代表数据库中varchar,必须给它设置长度
name = models.CharField(max_length=32)
password = models.CharField(max_length=32)

orm写好了,但是要怎样才能将数据迁移到数据库呢?
下面还要继续执行两条命令昨天写了一种方式,今天写另外一种,命令都是一样的 Tools --> run manage.py task --> 输入:makemigrations(将新增的orm操作记录下来)
-->继续输入:migrate(执行之前的记录)
这个有个好处就是,你记住不住单词没关系,他会给你提示,执行完毕数据就迁移到了数据库

如果你之前设计表,没有设计好,想在原表的基础上改字段,删字段,增加字段的话:
1、有一个操作就是永远不会变的,就是执行两条命令,把数据更新到数据库中
2、改、删字段,,直接在类中改属性就行了,删除的话,直接删除那属性就好了或注释掉
3、增加字段,,先在类中增加属性,然后执行两条迁移命令,但是这时弹出的信息会和之前不一样,没关系。
##会有1、2两条信息,会有这两条信息的原因就是:
假如你之前数据库已经有一万多条数据,这时你增加一个字段,那么你觉得你之前一万条数据该字段(你新增的)会
怎么办?空在那里,还是给那么添加一个默认值呢?
所以这两条信息就是让你给原有的数据给该字段添加默认值:
选项一:就是让你直接再命名界面中指定默认值就行
选项二:在原有orm中添加默认值default=什么值。写好了之后再执行那两条迁移命名

orm设计好了之后,它作用在views视图里的,所以在视图函数那个文件中,必须导入orm   from...import...
from app01 import models 导入之后,我们就可以通过models.类名-------->相当于连接到数据数据表 models.User.object.all() ------> select * from User;
models.User.object.filter(id=2).first() -----> select * from User where id=2;
models.User.object.filter(id=2).delete() ##删除id=1的记录
models.User.object.filter(id=2).update(name=name, address=address) ##修改记录 创建记录的两种方法
1、、models.User.object.create(name='zhuyu',address='cq')
2、、user = models.User(name='zhuyu',address='cq')
user.save() ##这里要提醒下user = models.User.object.filter(id=2) 这句代码它有返回值
user是一个QuerySet类
<class 'django.db.models.query.QuerySet'>
有个小习惯,你把上面类似执行的代码,赋给一个变量,你在打印,并打印它的类型,知道返回的是什么

django请求的生命周期:

    1、首先用户在客户端(浏览器)向服务端发出请求,并携带所有相关的数据
2、两台机器通信基于socket通信,在服务端获取到请求过来的数据,进行一系列处理,处理得到的数据就有url,
3、通过url在django中urls.py找到对应的视图函数,
4、转到该视图函数中,进行一些逻辑代码执行,中间可能回到数据库中取到数据,在模板文件夹中拿到模板,进行模板渲染,
渲染完成之后,然后将渲染好的模板封装到HttpResponse中,返回回去
5、这样客户端(浏览器)就能收到数据,显示到页面上

 
 
 
 
												

django-orm简记的更多相关文章

  1. django orm总结[转载]

    django orm总结[转载] 转载地址: http://www.cnblogs.com/linjiqin/archive/2014/07/01/3817954.html 目录1.1.1 生成查询1 ...

  2. Django ORM - 001 - 外键表查询主表信息

    开始用Django做web开发,我想大家都会遇到同样的问题,那就是如何高效快速的查询需要的数据,MVC都很简单,但是ORM折腾起来就有些费时间,我准备好好研究下Django ORM,所以会有一个系列的 ...

  3. Django ORM 中的批量操作

    Django ORM 中的批量操作 在Hibenate中,通过批量提交SQL操作,部分地实现了数据库的批量操作.但在Django的ORM中的批量操作却要完美得多,真是一个惊喜. 数据模型定义 首先,定 ...

  4. Django ORM 查询管理器

    Django ORM 查询管理器 ORM 查询管理器 对于 ORM 定义: 对象关系映射, Object Relational Mapping, ORM, 是一种程序设计技术,用于实现面向对象编程语言 ...

  5. Django ORM模型的一点体会

    作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁转载. 使用Python的Django模型的话,一般都会用它自带的ORM(Object-relational ma ...

  6. 数据库表反向生成(二) Django ORM inspectdb

    在前一篇我们说了,mybatis-generator反向生成代码. 这里我们开始说如何在django中反向生成mysql model代码. 我们在展示django ORM反向生成之前,我们先说一下怎么 ...

  7. Django ORM那些相关操作

    一般操作 https://docs.djangoproject.com/en/1.11/ref/models/querysets/         官网文档 常用的操作 <1> all() ...

  8. django orm 及常用参数

    一些说明: 表myapp_person的名称是自动生成的,如果你要自定义表名,需要在model的Meta类中指定 db_table 参数,强烈建议使用小写表名,特别是使用MySQL作为后端数据库时. ...

  9. Django ORM中,如何使用Count来关联对象的子集数量

    示例models 解决方法 有时候,我们想要获取一个对象关联关系的数量,但是我们不要所有的关联对象,我们只想要符合规则的那些关联对象的数量. 示例models # models.py from dja ...

  10. Django ORM存储datetime 时间误差8小时问题

    今天使用django ORM 将获取到的时间入库,并未出现问题,但是后来发现时间晚了8小时,经查询Django官方文档发现获取本地时间和UTC时间有差别. 首先科普下:UTC是协调世界时 UTC相当于 ...

随机推荐

  1. C#基础知识-引用类型和值类型的区别(六)

    在第一篇中我们介绍了C#中基本的15种数据类型,这15种数据类型中又分为两大类,一种是值类型,一种是引用类型.值类型有sbyte.short.long.int.byte.ushort.uint.ulo ...

  2. Dozer 实现对象间属性复制

    使用场景:两个领域之间对象转换. 比如:在系统分层解耦过程中, 对外facade接口,一般使用VO对象,而内core业务逻辑层或者数据层通常使用Entity实体. VO对象 package com.m ...

  3. 如何修改Vue打包后文件的接口地址配置

    1.背景 常规的vue项目分为本地环境和生产环境,我们只要对 config 文件夹下的 dev.env.js 和 prod.env.js 做相应的配置即可.但是最近在做的项目中,涉及到私有化部署,就是 ...

  4. HTML 5 表单相关元素和属性

    HTML使用表单向服务器提交请求,表单.表单控件的主要作用是收集用户输入,当用户提交表单时,用户输入内容将被作为请求参数提交到远程服务器.因此,在Web编程中,表单主要是用于收集用户输入的数据,在需要 ...

  5. 移动端点击a链接出现蓝色背景问题解决

    a:link, a:active, a:visited, a:hover { background: none; -webkit-tap-highlight-color: rgba(0,0,0,0); ...

  6. Highcharts - Bar Chart & Column Chart

    1. 条形图(Bar Chart)需要的数据格式类型如下: ["Luke Skywalker", "Darth Vader", "Yoda" ...

  7. 【Linux】Core dump故障分析

    引入: Q:如果一个程序运行3天后才会出错,这个时候难道需要我们一直用GDB调试程序3天吗? A:答案当然是否定的. 我们有更厉害的工具--Core dump 一.Coredump定义 Core Du ...

  8. Azure进阶攻略丨Azure网络通不通,PsPing&PaPing告诉你答案

    很多时候,为了解决一些问题,要查各种文档,很麻烦你造吗!做「伸手党」又容易被鄙视,这时候就需要用到[Azure 进阶攻略]啦!特此,我们推出关于 Azure 常用操作指南的系列文章,每篇涉及一个 Az ...

  9. SQL 创建自定义方法,匹配正则

    C#代码 using System.Text.RegularExpressions; public class FunctionRegex { [Microsoft.SqlServer.Server. ...

  10. libxml

    /** * section: Tree * synopsis: Navigates a tree to print element names * purpose: Parse a file to a ...