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 ...
随机推荐
- kindeditor富文本框使用方法
这周我一共使用了两个文本框编辑器!我的上一篇文档讲的是wangeditor这个编辑器,现在就来讲讲kindeditor这个编辑器! 首先还是去它的官网去下载脚本! http://kindeditor. ...
- SLAM架构的两篇顶会论文解析
SLAM架构的两篇顶会论文解析 一. 基于superpoint的词袋和图验证的鲁棒闭环检测 标题:Robust Loop Closure Detection Based on Bag of Super ...
- JVM集合之开篇点题
大家在平时的开发过程中是否遇到过StackOverflowError.OutOfMemoryError等类似的内存溢出错误呢?大家又是怎么解决这个问题的?再来,大家在面试过程中有没有被面试官提问过jv ...
- 在模仿中精进数据分析与可视化01——颗粒物浓度时空变化趋势(Mann–Kendall Test)
本文是在模仿中精进数据分析与可视化系列的第一期--颗粒物浓度时空变化趋势(Mann–Kendall Test),主要目的是参考其他作品模仿学习进而提高数据分析与可视化的能力,如果有问题和建议,欢迎 ...
- C#搞跨平台桌面UI,分别实现Windows,Mac,Linux屏幕截图
搞跨平台IM,截图功能少不了. Windows 创建GDI的兼容位图,把桌面的图像通过BitBlt拷贝到兼容位图里,通过兼容位图的数据指针创建Bitmap对象,由于兼容位图的内存是非托管的,Bitma ...
- 『居善地』接口测试 — 13、Moco框架的使用
目录 1.Moco框架第一个练习 2.Get方法的Mock实现 3.Post方法的Mock实现 4.请求中加入Cookies 5.请求中加入Header 6.Moco模拟重定向 7.综合练习 8.总结 ...
- apache jmeter下载与安装
JMeter是Apache软件基金会的产品,用于对静态的和动态的资源性能进行测试.jmeter可以运行在多个平台上,如Windows和Linux,本文讲的是在Windows安装jmeter. 工具/原 ...
- Pytorch CNN网络MNIST数字识别 [超详细记录] 学习笔记(三)
目录 1. 准备数据集 1.1 MNIST数据集获取: 1.2 程序部分 2. 设计网络结构 2.1 网络设计 2.2 程序部分 3. 迭代训练 4. 测试集预测部分 5. 全部代码 1. 准备数据集 ...
- Nginx为什么能快到根本停不下来?
Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名.本文从底层原理分析 Nginx 为什么这么快! Nginx 的进程模型 Nginx 服务器,正常运行过程中: 多进程:一个 M ...
- BIM,PIM接入GIS 需要解决的关键技术问题
随着技术发展,跨界融合已经不是新鲜事物,近两年BIM.PIM+GIS一张图的提出,给行业注入了一股清流. 为GIS行业发展带来了新的契机,同时也带来了一些新的挑战.面对挑战,本文将剖析BIM.PIM+ ...