Django基础07篇 ORM操作
1.新增(类似数据库操作的insert)
- # 新增
- #方式一:
- models.Category.objects.create(name='MySQL')
- #方式二:
- c = models.Category(name='Oracle')
- c.save()
- models.Article.objects.create(
- title='orm学习',
- content='orm学习, content',
- category_id=2
- ) # 知道外键,id
- category = models.Category.objects.get(id=3)
- models.Article.objects.create(
- title='orm学习2',
- content='orm学习2, content',
- category=category
- # category_id=category.id # category=category 这两行是等价的
- ) # 不知道外键,id
2.修改(类似数据库操作的update)
- # 修改
- c = models.Category.objects.get(id=3)
- c.name = 'JAVA'
- c.save() # 修改单条数据
- models.Category.objects.all().update(name='abc') # 修改全表的某个字段
- # 按照某个条件修改
- models.Category.objects.filter(name='abc').update(name='ccc', age=15)
3.删除(类似数据库操作的delete)
- # 删除
- c = models.Category.objects.get(id=6)
- c.delete() # 删除某一条
- models.Category.objects.all().delete() # 删除全表数据
- # 按照某些条件删除
- models.Category.objects.filter(name='abc').delete()
4.查询(类似数据库操作的select)
- # 简单查询
- result = models.Category.objects.all() # 查询所有的数据
- print(result)
- print(result.values())
- print(result.values_list())
- print(result.values('name')) # 根据某个字段的值过滤结果集
- print(result.values_list('name')) # 根据某个字段的值过滤结果集
- print(result.first()) # 获取结果集的第一个元素
- print(result.count()) # 获取结果集中结果个数
- result = models.Category.objects.get(id=1) # 获取单条结果
- print(result)
- # 复杂查询
- # 大于、小于、大于等于、小于等于、in 、not 、或
- result = models.Article.objects.filter(read_count__gt=0) # 大于0
- print(result)
- result = models.Article.objects.filter(read_count__gte=0) # 大于等于0
- print(result)
- result = models.Article.objects.filter(read_count__lt=0) # 小于0
- print(result)
- result = models.Article.objects.filter(read_count__lte=0) # 小于等于0
- print(result)
- result = models.Article.objects.exclude(read_count=0) # 不等于 not
- print(result)
- result = models.Article.objects.filter(id__in=[1, 2, 3]) # in
- print(result)
- # 模糊查询
- result = models.Article.objects.filter(title__contains='orm') # like,包含某个字符串
- print(result)
- result = models.Article.objects.filter(title__icontains='orm') # like,忽略大小写包含某个字符串
- print(result)
- result = models.Article.objects.filter(title__endswith='xxx') # 以什么结尾
- # 如果用get取单独1条数据时有报错风险,建议使用下面的代码,更健壮
- query_set = models.Article.objects.filter(id=5)
- if query_set:
- article = query_set.first()
- else:
- print('这条数据不存在')
- # 多条件查询 or and
- # where read_count >0 or title like '%orm%'
- result = models.Article.objects.filter(Q(read_count__gt=0) | Q(title__contains='orm'))
- print(result)
- # where read_count >0 and title like '%orm%'
- result = models.Article.objects.filter(Q(read_count__gt=0) & Q(title__contains='orm'))
- print(result)
- result = models.Article.objects.filter(read_count=0,title='python06篇')
- print(result)
- # where read_count >0 and title not like '%orm%'
- result = models.Article.objects.filter(Q(read_count=0) & ~Q(title__contains='orm')) # ~放在Q()前代表Q的非
- print(result)
查询结果
- <QuerySet [<Category: python>, <Category: Linux>, <Category: JAVA>, <Category: apche>, <Category: MySQL>]>
- <QuerySet [{'id': 1, 'create_time': datetime.datetime(2020, 11, 18, 23, 5, 22, 413832), 'update_time': datetime.datetime(2020, 11, 18, 23, 5, 22, 413832), 'name': 'python'}, {'id': 2, 'create_time': datetime.datetime(2020, 11, 18, 23, 6, 14, 86852), 'update_time': datetime.datetime(2020, 11, 18, 23, 6, 14, 86852), 'name': 'Linux'}, {'id': 3, 'create_time': datetime.datetime(2020, 11, 18, 23, 6, 21, 743606), 'update_time': datetime.datetime(2020, 11, 29, 15, 12, 4, 149925), 'name': 'JAVA'}, {'id': 4, 'create_time': datetime.datetime(2020, 11, 18, 23, 33, 40, 410426), 'update_time': datetime.datetime(2020, 11, 18, 23, 33, 40, 410426), 'name': 'apche'}, {'id': 5, 'create_time': datetime.datetime(2020, 11, 29, 14, 59, 9, 537770), 'update_time': datetime.datetime(2020, 11, 29, 14, 59, 9, 537770), 'name': 'MySQL'}]>
- <QuerySet [(1, datetime.datetime(2020, 11, 18, 23, 5, 22, 413832), datetime.datetime(2020, 11, 18, 23, 5, 22, 413832), 'python'), (2, datetime.datetime(2020, 11, 18, 23, 6, 14, 86852), datetime.datetime(2020, 11, 18, 23, 6, 14, 86852), 'Linux'), (3, datetime.datetime(2020, 11, 18, 23, 6, 21, 743606), datetime.datetime(2020, 11, 29, 15, 12, 4, 149925), 'JAVA'), (4, datetime.datetime(2020, 11, 18, 23, 33, 40, 410426), datetime.datetime(2020, 11, 18, 23, 33, 40, 410426), 'apche'), (5, datetime.datetime(2020, 11, 29, 14, 59, 9, 537770), datetime.datetime(2020, 11, 29, 14, 59, 9, 537770), 'MySQL')]>
- <QuerySet [{'name': 'python'}, {'name': 'Linux'}, {'name': 'JAVA'}, {'name': 'apche'}, {'name': 'MySQL'}]>
- <QuerySet [('python',), ('Linux',), ('JAVA',), ('apche',), ('MySQL',)]>
- python
- 5
- python
- <QuerySet [<Article: orm学习2>, <Article: python基础篇03>, <Article: python基础篇01>]>
- <QuerySet [<Article: orm学习2>, <Article: orm学习>, <Article: python08篇>, <Article: python07篇>, <Article: python06篇>, <Article: python05篇>, <Article: python04篇>, <Article: python基础篇03>, <Article: python基础篇02>, <Article: python基础篇01>]>
- <QuerySet []>
- <QuerySet [<Article: orm学习>, <Article: python08篇>, <Article: python07篇>, <Article: python06篇>, <Article: python05篇>, <Article: python04篇>, <Article: python基础篇02>]>
- <QuerySet [<Article: orm学习2>, <Article: python基础篇03>, <Article: python基础篇01>]>
- <QuerySet [<Article: python基础篇03>, <Article: python基础篇02>, <Article: python基础篇01>]>
- <QuerySet [<Article: orm学习2>, <Article: orm学习>]>
- <QuerySet [<Article: orm学习2>, <Article: orm学习>]>
- <QuerySet [<Article: orm学习2>, <Article: orm学习>, <Article: python基础篇03>, <Article: python基础篇01>]>
- <QuerySet [<Article: orm学习2>]>
- <QuerySet [<Article: python06篇>]>
- <QuerySet [<Article: python08篇>, <Article: python07篇>, <Article: python06篇>, <Article: python05篇>, <Article: python04篇>, <Article: python基础篇02>]>
Django基础07篇 ORM操作的更多相关文章
- {Django基础六之ORM中的锁和事务}一 锁 二 事务
Django基础六之ORM中的锁和事务 本节目录 一 锁 二 事务 一 锁 行级锁 select_for_update(nowait=False, skip_locked=False) #注意必须用在 ...
- day 71 Django基础六之ORM中的锁和事务
Django基础六之ORM中的锁和事务 本节目录 一 锁 二 事务 三 xxx 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 锁 行级锁 select_for_update(no ...
- day 58 Django基础六之ORM中的锁和事务
Django基础六之ORM中的锁和事务 本节目录 一 锁 二 事务 三 xxx 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 锁 行级锁 select_for_update( ...
- Django中的app及mysql数据库篇(ORM操作)
Django常见命令 在Django的使用过程中需要使用命令让Django进行一些操作,例如创建Django项目.启动Django程序.创建新的APP.数据库迁移等. 创建Django项目 一把我们都 ...
- Django之Models与ORM操作
一.models例子 from django.db import models class User(models.Model): """ 用户表 "" ...
- Django基础——Model篇(三)
一 Django ORM中的概念 ORM —— 关系对象映射,是Object Relational Mapping的简写,是用来简化数据库操作的框架 Django ORM遵循Code Frist原则, ...
- 第六篇 ORM 操作大全
阅读目录(Content) 一 对象关系映射ORM概念 二 Django连接MySQL 三modles.py创建表 常用字段 字段合集 字段参数 DateField和DateTimeField 四.关 ...
- Django基础-01篇
一.Django介绍 flask,FastApi是轻量级服务端开发框架 Django是重量级服务端开发框架 ORM:封装了数据库操作 form:校验请求数据 安装Django: pip install ...
- Django/MySql数据库基本操作&ORM操作
数据库配置: #第一步在settings里面 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME':'dbna ...
随机推荐
- 针对Spring MVC的Interceptor内存马
针对Spring MVC的Interceptor内存马 目录 针对Spring MVC的Interceptor内存马 1 基础拦截器和调用流程的探索 1.1 基础拦截器 1.2 探索拦截器的调用链 1 ...
- Asp.Net Core Api 使用Swagger管理文档教程的安装与使用
这周因为公司的需求需要我做一个Api的程序,这周的三天时间我一直在Core Api和 framework Api之间做纠结.不知道要使用哪一个去做项目,想着想着就决定了.既然两个我都没用过那个何不来使 ...
- 永远的Ace 实验四 团队作业1:软件研发团队组建
项目 内容 课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/2018CST/ 这个作业要求链接 https://www.cnblogs.com/nwnu-da ...
- Camera噪声问题
Camera噪声问题 Camera RGB 域的噪声 以上部分属于sensor processing,接下来的部分属于color.luminance processing. gamma gamma是在 ...
- NVIDIA GPU上的随机数生成
NVIDIA GPU上的随机数生成 NVIDIA CUDA随机数生成库(cuRAND)提供高性能的GPU加速的随机数生成(RNG).cuRAND库使用NVIDIA GPU中提供的数百个处理器内核,将质 ...
- NVIDIA DRIVE AGX开发工具包
NVIDIA DRIVE AGX开发工具包 英伟达drive AGX开发工具包提供了开发生产级自主车辆(AV)所需的硬件.软件和示例应用程序.NVIDIA DRIVE AGX系统建立在汽车产品级芯片上 ...
- 基于ARMv8的固件系统体系结构
基于ARMv8的固件系统体系结构 The architecture of ARMv8-based firmware systems 自2011年发布以来,ARMv8处理器架构在移动设备市场上已经相当普 ...
- Django(56)Mixins工具集的使用
前言 mixins翻译成中文是混入,组件的意思.在DRF中,针对获取列表,检索,创建等操作,都有相应的mixin,一般我们自定义创建的类视图都会继承自GenericAPIView和Mixins一起使用 ...
- 「题解」CF1468M Similar Sets
本文将同步发布于: 洛谷博客: csdn: 博客园: 简书. 题目 题目链接:洛谷.CF1468M. 题意简述 给定 \(n\) 个集合 \(S_{1\sim n}\),问是否存在 \(i,j\) 满 ...
- fiddler操作详情
1.设置fiddler请求过滤 2.请求与响应的格式内容 3.拦截请求操作 a.按F11开始拦截,发送请求 b.修改请求数据 c.SHIFT+F11关闭拦截 d.run to complete,把修 ...