Django进阶Model篇004 - ORM常用操作
一、增加
create和save方法
实例:
1、增加一条作者记录
>>> from hello.models import *
>>> Author.objects.create(name='胡大海') >>> AuthorDetail.objects.create(sex=False,email='333@qq.com',address='北京XX',birthday='1988-1-2',author_id=1)
2、增加一条出版社记录
>>> pub=Publisher()
>>> pub.name='电子工业出版社'
>>> pub.address='成都华阳'
>>> pub.city='成都'
>>> pub.state_province='四川'
>>> pub.country='中国'
>>> pub.website='http://www.maiziedu.com'
>>> pub.save()
3、增加一条书籍记录
>>> Book.objects.create(title='python实战',publisher=pub,publication_date='2009-5-6')
>>> book=Book.objects.get(id=1)
>>> author=Author.objects.get(id=1)
>>> book.authors.add(author)
objects:model默认管理器。create是这个管理器里面的方法。
插入主外键关系的时候,可以用对象的方式,也可以直接以关联id的方式。
插入多对多关系的时候要分步操作。
save是model对象的方法。
二、修改
update和save方法
实例:
1、修改id为1的作者的名字为叶良辰,性别改为女
>>> Author.objects.filter(id=1).update(name='叶良辰')
>>> AuthorDetail.objects.filter(author__id=1).update(sex=True)
2、修改名为“电子工业出版社”的出版社的网址为 http://www.google.com,城市为重庆
Publisher.objects.filter(name='电子工业出版社').update(city='重庆',website='http://www.google.com')
update()方法是QuerySet对象的方法
三、查询(惰性机制)
实例:
1、查询所有的出版社信息
>>> Publisher.objects.all()
所谓惰性机制:Publisher.objects.all() 只是返回了一个QuerySet(查询结果集对象),并不会马上执行sql,而是当调用QuerySet的时候才执行。
四、删除
delete方法
实例:
1、删除id为1的书籍信息;
>>> Book.objects.filter(id=1).delete()
2、删除出版社城市为重庆的记录;
>>> Publisher.objects.filter(city='重庆').delete()
注意:django中的删除默认是级联删除。
delete方法也是QuerySet对象的方法
更多详见:https://docs.djangoproject.com/en/1.10/ref/models/querysets/
***微信扫一扫,关注“python测试开发圈”,了解更多测试教程!***
Django进阶Model篇004 - ORM常用操作的更多相关文章
- Django进阶Model篇005 - QuerySet常用的API
django.db.models.query.QuerySet QuerySet特点: 1.可迭代 2.可切片 查询相关API 1.get(**kwargs):返回与所给的筛选条件相匹配的对象,返回结 ...
- Django进阶Model篇—数据库操作(ORM)
一.数据库配置 django 默认支持sqlite.mysql.oracle.postgresql数据库,像db2和sqlserver之类的数据库需要第三方的支持,具体详见https://docs.d ...
- Django进阶Model篇008 - 使用原生sql
注意:使用原生sql的方式主要目的是解决一些很复杂的sql不能用ORM的方式写出的问题. 一.extra:结果集修改器-一种提供额外查询参数的机制 二.执行原始sql并返回模型实例 三.直接执行自定义 ...
- Django进阶Model篇002 - 模型类的定义
一.创建数据模型. 实例: 作者模型:一个作者有姓名. 作者详情模型:把作者的详情放到详情表,包含性别.email 地址和出生日期,作者详情模型与作者模型之间是一对一的关系(OneToOneField ...
- Django进阶Model篇001 - mysql 数据库的配置
django 默认支持sqlite.mysql.oracle.postgresql数据库,像db2和sqlserver之类的数据库需要第三方的支持,具体详见: https://docs.djangop ...
- Django进阶Model篇007 - 聚集查询和分组查询
接着前面的例子,举例聚集查询和分组查询例子如下: 1.查询人民邮电出版社出了多少本书 >>> Book.objects.filter(publisher__name='人民邮电出版社 ...
- Django进阶Model篇003 - 数据库同步技巧
一.认识一个目录 目录名:migrations 作用:用来存放通过makemigrations命令生成的数据库脚本,不熟悉的情况下,里面生成的脚本不要轻易修改.app目录下必须要有migrations ...
- Django进阶Model篇006 - 多表关联查询
接着前面的例子,举例多表查询实例如下: 1.查询作战的所有完整信息. >>> AuthorDetail.objects.values('sex','email','address', ...
- Django基础——Model篇(一)
到目前为止,当程序涉及到数据库相关操作时,我们一般都会这么操作: (1)创建数据库,设计表结构和字段 (2)使用MySQLdb来连接数据库,并编写数据访问层代码 (3)业务逻辑层去调 ...
随机推荐
- SpringMVC 之数据转换和国际化
1. 数据绑定流程 SpringMVC 主框架将 ServletRequest 对象及目标方法的入参实例传递给 WebDataBinderFactory 实例,以创建 DataBinder 实例对象; ...
- 转!java自定义注解
转自:http://blog.csdn.net/yixiaogang109/article/details/7328466 Java注解是附加在代码中的一些元信息,用于一些工具在编译.运行时进行解析 ...
- django 多并发,多线程。
参考http://blog.csdn.net/u013378306/article/details/76215982 django 原生为单线程序,当第一个请求没有完成时,第二个请求辉阻塞,知道第一个 ...
- Leetcode注意
List<List<Integer>> res = new ArrayList<>();
- node.js---sails项目开发(2)
1.安装mongoDB,这里用brew安装 brew install mongodb 2. 启动数据库 mongod 3.再打开一个终端,连接数据库 mongo 4.启动成功后,接下来就是新建一个数据 ...
- java 多线程 day02 定时器
package com.czbk.thread; import java.util.Date;import java.util.Timer;import java.util.TimerTask; /* ...
- Redis三(List操作)
List操作 redis中的List在在内存中按照一个name对应一个List来存储.如图: lpush(name,values) 1 2 3 4 5 6 7 8 # 在name对应的list中添加元 ...
- Mycat教程---数据库的分库分表
mycat介绍 介绍在官方网站上有比较详细的介绍,在这里复制粘贴没什么意思,大家到官网上看 官网链接 前置条件 本教程是在window环境下运行的,实际生产推荐在Linux上运行. 必备条件(自行安装 ...
- java 中JFinal getModel方法和数据库使用出现问题解决办法
JFinal getModel方法(从页面表单中获取Model对象)+数据库存储问题 一.getmodel方法 1.在JConfig配置类中的数据库映射(存储到数据库时需要此配置) public vo ...
- oradebug工具使用3(转载)
1 oradebug介绍 oradebug主要是给oracle支持人员使用的,尽管很早便有,但oracle官网很少有记载.他是个sql*plus命令行工具,有sysdba的权限就可以登入,无需特别设置 ...