ORM: object relationship mapping

关于数据库的两条命令:
python manage.py makemigrations
python manage.py migrate
数据库第一次配置必须完成数据库的迁移,执行上边的两条命令就好 表单的记录操作:
1、添加
obj = models.表名(**kwargs)
obj.save() models.表名.objects.create(**kwargs) 2、修改
#方式一:
obj = models.表名.objects.filter(name="python")[0]
obj.name = "JAVA"
obj.save #方式二 update
models.表名.objects.filter(name="python").update(**kwargs) 3、删除:
models.表名.objects.filter(name="python").delete() 4、查询:
QuerySet集合对象:
models.表名.objects.all()
models.表名.objects.filter(**kwargs)
models.表名.objects.all().values(*args)
models.表名.objects.all().values_list(*args)
models.表名.objects.exclude(**kwargs)
models.表名.objects.order_by(*args)
models.表名.objects.distinct(*args) model对象:
models.表名.objects.get(**kwargs)
models.表名.objects.filter(**kwargs).first()
models.表名.objects.filter(**kwargs).last()
models.表名.objects.filter(**kwargs).count()
models.表名.objects.filter(**kwargs).exist() 关联表记录操作:
表关系:
1、一对一
2、一对多
3、多对一
添加记录:
一对多:
创建一对多:
publish = models.Foreignkey("Publish",related_name="bookList")
#添加记录方式1:
models.Book.objects.create(publish_id=1)
#添加的记录方式2:
pubObj = models.Publish.objects.filter(name = "人民出版社")[0]
models.Book.objects.create(publish=pubObj) 多对多:
创建多对多关系:
authorlist = models.ManyToManyField("Author",related_name="bookList")
多对多添加记录:
book_obj = models.Book.objects.create(title="追风的人",price=100,publishDate="2017-12-12",publish_id=2)
alex_obj = models.Author.objects.filter(name="alex")[0]
egon_obj = models.Author.objects.filter(name="egon")[0] 查询记录:
正向查询:
一对多:
linux_obj = models.Book.objects.filter(title="linux").first()
print(linux_obj.publish.name) #与这本书对象关联的出版社的对象的名字 多对多:
linux_obj = models.Book.objects.filter(title="linux").first()
print(linux_obj.authorlist.all()) #与这本书关联的所有的作者的对象集合
反向查询:
一对多:
eg:查找人民出版社出版过的书籍的名字
publist_obj = models.Publish.objects.filter(name="人民出版社")[0]
print(publist_obj.bookList.all()) #出版社书籍对象集合 多对多:
eg:查找yuan出版过的素有书籍的名字和价格
author_yuan = models.Author.objects.get(name="yuan")
print(author_yuan.bookList.all())
与该作者关联的所有书籍的对象的集合

  

ORM: object relationship mapping的更多相关文章

  1. ORM(Object Relational Mapping)框架

    ORM(Object Relational Mapping)框架 ORM(Object Relational Mapping)框架采用元数据来描述对象一关系映射细节,元数据一般采用XML格式,并且存放 ...

  2. JDBC ORM(Object Relationship Database Mapping)

    ORM=Object Relationship Database Mapping 对象和关系数据库的映射 简单说,一个对象,对应数据库里的一条记录 示例:根据id返回一个Hero对象 提供方法get( ...

  3. ORM(Object/Relation Mapping)框架简介

    ORM 框架简介 对象-关系映射(Object/Relation Mapping,简称ORM),是随着面向对象的软件开发方法发展而产生的.面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关 ...

  4. [19/05/08-星期三] JDBC(Java DataBase Connectivity)_ORM(Object Relationship Mapping, 对象关系映射)

    一.概念 基本思想: – 表结构跟类对应: 表中字段和类的属性对应:表中记录和对象对应: – 让javabean的属性名和类型尽量和数据库保持一致! – 一条记录对应一个对象.将这些查询到的对象放到容 ...

  5. Object Relational Mapping框架之Hibernate

    hibernate框架简介: hibernate框架就是开发中在持久层中应用居多的ORM框架,它对JDBC做了轻量级的封装. (百度介绍,感觉不错) 什么是ORM:Object Relational ...

  6. Object/Relational Mapping 数学关系 反面向对象

    [hibernate ORM 是对象关系映射框架 事实上的持久化存储引擎] http://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/ ...

  7. 一:ORM关系对象映射(Object Relational Mapping,简称ORM)

    狼来的日子里! 奋发博取 10)django-ORM(创建,字段类型,字段参数) 一:ORM关系对象映射(Object Relational Mapping,简称ORM) ORM分两种: DB fir ...

  8. django 操作数据库--orm(object relation mapping)---models

    思想 django为使用一种新的方式,即:关系对象映射(Object Relational Mapping,简称ORM). PHP:activerecord Java:Hibernate C#:Ent ...

  9. Django中ORM介绍和字段及字段参数 Object Relational Mapping(ORM)

    Django中ORM介绍和字段及字段参数   Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简 ...

随机推荐

  1. C# 杂活

    1 下拉框 List<Model.Sys.AccountModel> AcModel = BLL.Sys.AccountBLL.Instance.GetModelList("Ro ...

  2. Android活动生命周期

    任务(Task) Android 是使用任务(Task)来管理活动的,一个任务就是一组存放在栈里的活动的集合,这个栈也被称作返回栈(Back Stack).在默认情况下,每当我们启动了一个新的活动,它 ...

  3. iOS开发--数据库管理CoreData的使用

    CoreData是iOS5后,苹果提供的原生的用于对象化管理数据并且持久化的框架.CoreData本质上是将底层数据库封装成对象进行管理.但数据库实际上只是CoreData的一个功能,并不是全部功能. ...

  4. lodash源码分析之Hash缓存

    在那小小的梦的暖阁,我为你收藏起整个季节的烟雨. --洛夫<灵河> 本文为读 lodash 源码的第四篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash gitbo ...

  5. 简单记录一下原生ajax

    面试老忘记,代码如下 function ajax() { var xmlHttpRequest = null; //定义XMLHttp对象的容器 if(window.XMLHttpRequest) { ...

  6. centOS7 mini配置linux服务器(四) 配置jdk

    这里简单写一下centos7Mini  安装jdk1.8的全过程. 一.下载jdk,linux版本. 地址:http://www.oracle.com/technetwork/java/javase/ ...

  7. Anti-pattern/反模式

      常见的与"直觉"相背离的anti-pattern产生的实际原因是没有深入.全面地考虑问题,即只关注到自己关心的方面,忽略了其他重要的.起相反作用的因素. 所以这个"直 ...

  8. 安装MySQL容易出现的问题

    mysql 安装到最后一步时,start service 为失败状态. 解决方法: 方 式1  MySQL安装是出现could not start the service mysql error:0 ...

  9. [编织消息框架][网络IO模型]Netty Reactor

    严格来讲Netty Reactor是一种设计模式,一听模式两字就知道了吧,套路哈哈 Reactor中文译为“反应堆”. 看图netty处理流程 1.netty server 至少有两组reactor. ...

  10. vim编辑器的使用技巧

    vim(vi)是上Linux非常常用的编辑器,很多Linux发行版都默认安装了vi(vim).vi(vim)命令繁多但是如果使用灵活之后将会大大提高效率.vi是“visual interface”的缩 ...