首先orm是什么?

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

  1. 专业性解释网上一大推,随便搜搜就能了解大概。
    在我理解(通俗):一个类 ----- 数据库中一张表
    类属性 ----- 数据表中的字段名
    实例一个对象 --- 表里的一条记录
  2.  
  3. orm的原理现在还没搞懂,它是具体怎么实现的,大概就是将python语句进行转换,转换成spl语句,原理就是执行sql语句
    后面我会继续更新orm
  1. 下面大概简单的记录下它的用法!
  1. orm一般在app文件夹中的models.py文件书写
  2. 写一个类,其类名就是那张表的名字,但是django会给你进行封装,将APP01_类名去命名,
  3. 单单写一个类是完全不行的,必须继承 models.Model 这个类才行,继续它你就可以使用基类的一个方法。
  4. 下面我简单写一个用户表,写写注释
  5.  
  6. class User(models.Model):
  7.  
  8. ##AutoField代表自增字段(数据库中int),primary_key 主键
  9. id = models.AutoField(primary_key=True)
  10.  
  11. ##CharField代表数据库中varchar,必须给它设置长度
  12. name = models.CharField(max_length=32)
  13. password = models.CharField(max_length=32)
  1.  
  1. orm写好了,但是要怎样才能将数据迁移到数据库呢?
  2. 下面还要继续执行两条命令昨天写了一种方式,今天写另外一种,命令都是一样的
  3.  
  4. Tools --> run manage.py task --> 输入:makemigrations(将新增的orm操作记录下来)
  5. -->继续输入:migrate(执行之前的记录)
  6. 这个有个好处就是,你记住不住单词没关系,他会给你提示,执行完毕数据就迁移到了数据库
  1.  
  1. 如果你之前设计表,没有设计好,想在原表的基础上改字段,删字段,增加字段的话:
  2. 1、有一个操作就是永远不会变的,就是执行两条命令,把数据更新到数据库中
  3. 2、改、删字段,,直接在类中改属性就行了,删除的话,直接删除那属性就好了或注释掉
  4. 3、增加字段,,先在类中增加属性,然后执行两条迁移命令,但是这时弹出的信息会和之前不一样,没关系。
  5. ##会有1、2两条信息,会有这两条信息的原因就是:
  6. 假如你之前数据库已经有一万多条数据,这时你增加一个字段,那么你觉得你之前一万条数据该字段(你新增的)会
  7. 怎么办?空在那里,还是给那么添加一个默认值呢?
  8. 所以这两条信息就是让你给原有的数据给该字段添加默认值:
  9. 选项一:就是让你直接再命名界面中指定默认值就行
  10. 选项二:在原有orm中添加默认值default=什么值。写好了之后再执行那两条迁移命名
  1.  
  1. orm设计好了之后,它作用在views视图里的,所以在视图函数那个文件中,必须导入orm from...import...
  2. from app01 import models
  3.  
  4. 导入之后,我们就可以通过models.类名-------->相当于连接到数据数据表
  5.  
  6. models.User.object.all() ------> select * from User;
  7. models.User.object.filter(id=2).first() -----> select * from User where id=2;
  8. models.User.object.filter(id=2).delete() ##删除id=1的记录
  9. models.User.object.filter(id=2).update(name=name, address=address) ##修改记录
  10.  
  11. 创建记录的两种方法
  12. 1、、models.User.object.create(name='zhuyu',address='cq')
  13. 2、、user = models.User(name='zhuyu',address='cq')
  14. user.save()
  15.  
  16. ##这里要提醒下user = models.User.object.filter(id=2) 这句代码它有返回值
  17. user是一个QuerySet
  18. <class 'django.db.models.query.QuerySet'>
  19. 有个小习惯,你把上面类似执行的代码,赋给一个变量,你在打印,并打印它的类型,知道返回的是什么
  1.  
  1. django请求的生命周期:
  2.  
  3. 1、首先用户在客户端(浏览器)向服务端发出请求,并携带所有相关的数据
  4. 2、两台机器通信基于socket通信,在服务端获取到请求过来的数据,进行一系列处理,处理得到的数据就有url
  5. 3、通过urldjangourls.py找到对应的视图函数,
  6. 4、转到该视图函数中,进行一些逻辑代码执行,中间可能回到数据库中取到数据,在模板文件夹中拿到模板,进行模板渲染,
  7. 渲染完成之后,然后将渲染好的模板封装到HttpResponse中,返回回去
  8. 5、这样客户端(浏览器)就能收到数据,显示到页面上
  1.  
  1.  
  1.  
  1.  
  1.  
  1.  

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. 一个简单问题引发对IEnumerable和IQueryable的思考

    问题概述:    首先看下图,有客户表和客户负责人表关系是多对多,访问数据库使用的是EF所以这里我们开启了延迟加载,需求就是将每个客户的所有负责人逗号拼接显示在负责人这一栏位, 对你没看错需求就是这么 ...

  2. Redis简介及持久化

    Redis是一个key-value数据库,他不仅性能强劲,而且还具有复制特性以及为解决问题而生的独一无二的数据模型.可用于缓存.消息队列.发布.订阅消息.商品列表和评论列表等场景.Redis提供了5种 ...

  3. Supper关键字

    java中的super关键字是一个引用变量,用于引用直接父类对象. 每当创建子类的实例时,父类的实例被隐式创建,由super关键字引用变量引用. java super关键字的用法如下: super可以 ...

  4. linkedHashMap源码解析(JDK1.8)

    引言 关于java中的不常见模块,让我一下子想我也想不出来,所以我希望以后每次遇到的时候我就加一篇.上次有人建议我写全所有常用的Map,所以我研究了一晚上LinkedHashMap,把自己感悟到的解释 ...

  5. JDE获取所有字典数据

    select a.*,b.DTDL01 FROM crpctl.f0004 a,crpctl.f0004d b where a.dtsy =b.dtsy(+) and a.dtrt =b.dtrt(+ ...

  6. Django问卷调查项目思路流程

    Django问卷调查项目思路流程: 1 后端思路 : 需求分析 ---- 找出各实体对应关系 ---- 设计model架构 ---- 统一资源封装 --- 提供资源API入口 ---- 设计项目实体功 ...

  7. HTML <meta> Attribute

    HTML <meta> Attribute http-equiv 定义和用法 The http-equiv attribute provides an HTTP header for th ...

  8. 自动驾驶self driving知识点mark

    C++, algorithm, RTOS,TX2, CAN, 标准, car model,

  9. 加深理解HTTP请求---网络基础TCP/IP

    为了了解HTTP,必须的了解TCP/IP协议族. 通常使用的网络实在TCP/IP协议族的基础上运作的.而HTTP就属于他的一个子集. 1.TCP/IP 协议族 计算机与网络设备要相互通信,双方就必须基 ...

  10. 在同一网关下ping不通其他电脑

    最近在做数据库相关的程序,所以想先用ping试下和主机连没连着,但发现虽然两台电脑在同一网关下,但却互相ping不通,后来才发现,原来是防火墙在作怪. Omg!感慨一下!默认的情况下,保守的windo ...