ORM映射(对象关系映射)
分创建表和操作表两个部分
创建单表
创建关联表(foreignKey)
一对一
一对多(重点)
多对多(重点)
创建表后加str方法把打印的地址转换成对应字符
表的操作(增删改查):
1.增(create,save)
from app01.modals import *
create方式一:Author.objects.create(name="eric")
create方式二:Author.objects.create(*{"name":"eric"})
save方式一:author = Author(name="eric")
author.save()
save方式二:author=Author()
author.name="eric"
author.save()
2.删(delete)
Book.object.filter(id=1).delete()
(3,{'app01.Book_authors':2,'app01.Book':1})
3.改(update,save)
update直接改:Publisher.objects.filter(id=2).update(name='eric')
save相当于重新赋值:author=Author.object.get(id=5)
author.name='eric'
author.save()
4.查(filte,value等)
查询API:54-02
filter:(**kwargs) :它包含了与所给筛选条件相匹配的对象
all():查询所有结果
get(**kwargs):返回与所给筛选条件匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会
抛出错误。
对查询结果进行处理:
values(**kwargs):返回一个ValueQuerySet 一个特殊的QuerySet,运行后得到的并不是一系列model的实例化对象,而
是一个可迭代的字典序列
exclude(**kwargs):它包含了与所给筛选条件不匹配的对象
order_by(*field):对查询结果排序
reverse():对查询结果反向排序
distinct():从返回结果中剔除重复记录
values_list(*field):它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列
count():返回数据库中匹配查询(QuerySet)的对象数量。
fist():返回第一条记录
last():返回最后一条记录
exists():如果QuerySet包含数据就返回True,否则就返回False
惰性机制:
1.可迭代
2.可切片
5.重点:如何创建存在一对多或多对多关系一本书的信息呢?(如何处理外键关系的字段如一对多的publisher和
多对多的authors)
一对一(OneToOne):
一对多(foreignKey):
插入(1)models.Book.object.create(title="Python",publish_id=2)
(2)推荐使用:
models.Book.object.create(title="Python",publish=obj)
由于绑定一对多的字段,比如publlish_id
多对多(通过外键和方法自动创建第三张表):model.manytomanyfield()
自动创建第三张表:
add()绑定关系
remove()解除关系
----正向查询(例子是从2开始建立的正向查询)
book=models.Book.objects.filter(id=2)[0] #获取id=2时的参数值
authors=models.Author.objects.filter(id__gt=2) #大于2
book.author.add(*authors)
book.author.remove(*authors) #移除关系
----反向查询 (例子是从3开始到2建立的反向查询)
author=models.Author.objects.filter(id=3)[0]
books=models.Book.objects.filter(id__gt=2)
author.book_set.add(*books)
author.book_set.remove(*books) #移除关系
非自动创建第三张表(手动):
手动建表可以直接插入数据
联合唯一:unique_together=['字段','字段']
控制台执行数据库操作:
python manage.py makemigrations
python manage.py migrate
注:第三张表的删除会出现级联删除情况,update()方法要用集合对象才能调用
manytomany():通过两个foreignKey
缓存时用iterator()方法把对象封装成可迭代对象

ORM映射(对象关系映射)的更多相关文章

  1. ORM即 对象-关系映射(转自:微冷的雨)

    ORM即 对象-关系映射: 将数据库中的数据关系表,映射为实体对象. 灵动思绪EF(Entity FrameWork) 作者: 微冷的雨  来源: 博客园  发布时间: 2013-01-22 16:2 ...

  2. Python学习---django之ORM语法[对象关系映射]180124

    ORM语法[对象关系映射] ORM: 用面向对象的方式去操作数据库的创建表以及增删改查等操作. 优点:1 ORM使得我们的通用数据库交互变得简单易行,而且完全不用考虑该死的SQL语句.快速开发. 2 ...

  3. Django——Django中的QuerySet API 与ORM(对象关系映射)

    首先名词解释. ORM: 对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型 ...

  4. ORM框架(对象关系映射)

    Entity Framework 学习初级篇1--EF基本概况 http://www.cnblogs.com/xray2005/archive/2009/05/07/1452033.html ORM  ...

  5. 优酷项目之 ORM(数据库对象关系映射)代码重写

    前言: 我们在操作数据库时候一般都是通过sql代码来操作mysql数据库中相关数据,这就需要懂得sql语句,那么怎么样才能在不懂sql语句的情况下通过我们所学的python代码来实现对mysql数据库 ...

  6. ORM概述(对象关系映射)

    ORM概述: ORM(Object-Relational Mapping)表示对象关系映射.在面向对象的软件开发中,通过ORM,就可以把对象映射到关系型数据库中.只要有一套程序能够做到加你对象与数据库 ...

  7. [Python之路] ORM(对象关系映射)

    一.概念 ORM是Python后端Web框架Django的核心思想,"Object Relational Mapping",即对象-关系映射,简称ORM. 一句话理解就是: 创建一 ...

  8. ORM:对象关系映射

    一.简单操作 定义:面向对象和关系型数据库的一种映射,通过操作对象的方式操作数据 对应关系: 类对应数据表 对象对应数据行(记录) 属性对应字段 导入:from app01 import models ...

  9. python之ORM(对象关系映射)

    实现了数据模型与数据库的解耦,通过简单的配置就可以轻松更换数据库,而不需要更改代码.orm操作本质上会根据对接的数据库引擎,翻译成对应的sql语句.所有使用Django开发的项目无需关心程序底层使用的 ...

  10. ORM对象关系映射

    ORM 总结: ORM:对象关系映射 作用: 1.将定义数据库模型类--> 数据库表 2.将定义数据库模型类中的属性--->数据库表字段 3.将模型对象的操作(add,delete,com ...

随机推荐

  1. HDU3870-Caught these thieves(最小割->偶图->最短路问题)

    A group of thieves is approaching a museum in the country of zjsxzy,now they are in city A,and the m ...

  2. JSP+Servlet 实现:理财产品信息管理系统

    一.接业务,作分析 1.大致业务要求 1.1 使用 JSP+Servlet 实现理财产品信息管理系统,MySQL5.5 作为后台数据库,实现查看理财 和增加理财功能 1.2 查询页面效果图 1.3 添 ...

  3. zabbix监控系统系列

    来自网站:http://www.361way.com/zabbix-summarize/3335.html 一.zabbix的特点 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能 ...

  4. python输出日志到文件(每天一个日志)

    import logging from logging.handlers import TimedRotatingFileHandler logger = logging.getLogger('sim ...

  5. 【Webpack】373- 一看就懂之 webpack 高级配置与优化

    本文原载于 SegmentFault 社区专栏 前海拾贝 作者:JS_Even_JS 一.打包多页面应用 所谓打包多页面,就是同时打包出多个 html 页面,打包多页面也是使用 html-webpac ...

  6. 【Vuejs】350- 学习 Vue 源码的必要知识储备

    前言 我最近在写 Vue 进阶的内容.在这个过程中,有些人问我看 Vue 源码需要有哪些准备吗?所以也就有了这篇计划之外的文章. 当你想学习 Vue 源码的时候,需要有扎实的 JavaScript 基 ...

  7. Spring Ioc Configration - Annotation

    1.配置类注解@Configuration. 2.Bean注解 @Bean. 3.导入其他配置类@Import. 4.回调函数 @Bean(initMethod = "init", ...

  8. fineuploader php服务端

    新版本的fineuploader项目中已经没有现成的php server端,需要额外使用composer进行安装,折腾好久才下下来,在此分享出来给大家. 下载地址: http://files.cnbl ...

  9. 《Dotnet9》系列-开源C# Winform控件库强力推荐

    时间如流水,只能流去不流回! 点赞再看,养成习惯,这是您给我创作的动力! 本文 Dotnet9 https://dotnet9.com 已收录,站长乐于分享dotnet相关技术,比如Winform.W ...

  10. Docker 以及 docker-compose 的部署

    Docker部署 方式一 #下载软件源 wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.ustc.edu.cn/docker-ce/li ...