这几天重新学习了一下django的orm,以此作为记录来分享。

Part1:修改配置,生成表

在写数据和查数据之前,首先先得把django配置一下,具体配置如下:

1.先在公共项目的settings中配置数据库信息

2.在公共项目的__init__.py文件中导入pymysql并写入一行代码

3.在需要生成表的app的models.py中写生成的表

from django.db import models  

# Create your models here.

class Book(models.Model):
username = models.CharField(max_length=64, unique=True)
email = models.EmailField()
password = models.CharField(max_length=128)
register_date = models.DateTimeField("注册日期", auto_now_add=True)
signature = models.CharField(verbose_name="签名", max_length=128, blank=True, null=True)
num = models.IntegerField(null=True) def __str__(self): return self.username

这3步都完成后,我们就可以通过命令行来创建表了(在项目根目录执行)

1. python manage.py makemigrations

2.python manage.py migrate

执行完以后你就可以去数据库查看一下 表了

 红框就是你app名加上类名拼接出来的表名,ok通过django把表建好了,那接下来我们就开始增加数据和查询数据!!!

Part2:新增数据

先在view.py中新增一个视图函数

方式一:

from django.shortcuts import render, HttpResponse

# Create your views here.

from GmTool.models import Book

def single_table(request):

    # ---------------------------------------------新增---------------------------------------------#

    # 方式一:
book_obj = Book(username='leogao', email='1823231344', password='19961030', register_date='2020-10-30', signature='hh', num=100)
book_obj.save()
return HttpResponse('OK')

此时在浏览器器访问接口,我这边是本地启的服务:http://127.0.0.1:8000/study/orm ,页面会返回一个ok,查看数据库中的GmTool,如下图已成功新增

方式二:

from django.shortcuts import render, HttpResponse

# Create your views here.

from GmTool.models import Book

def single_table(request):

    # ---------------------------------------------新增---------------------------------------------#

    # 方式二: create返回值就是当前生成的对象记录
book_obj_two = Book.objects.create(username='biyuting', email='18232324544', password='19951030', register_date='2020-10-30', signature='hhh', num=200)
return HttpResponse('OK')

此时在浏览器器访问接口,http://127.0.0.1:8000/study/orm ,页面会返回一个ok,查看数据库中的GmTool,如下图已成功新增

以上两种方法演示了新增数据的方法,接下来我们看下单标查询的一些常用接口

Part3:单表查询

models文件

from django.db import models

# Create your models here.

class Book(models.Model):
username = models.CharField(max_length=64, unique=True)
email = models.EmailField()
password = models.CharField(max_length=128)
register_date = models.DateTimeField("注册日期", auto_now_add=True)
signature = models.CharField(verbose_name="签名", max_length=128, blank=True, null=True)
num = models.IntegerField(null=True) def __str__(self): return self.username

表中的数据:

1.all方法:将对象中的所有数据都取出来,以QuerySet的格式返回

# (1) all方法
book = Book.objects.all() # 返回的是QuerySet对象 调用的是QuerySet对象
print(book)
for obj in book: # 遍历可以每个对象中的属性
print(obj.email) return HttpResponse('OK')

执行结果:

2.filter方法:过滤,以QuerySet的格式返回

book = Book.objects.filter(username='leogao')  # 返回的是QuerySet对象 同样可以遍历哦 调用的是QuerySet对象
print(book)
return HttpResponse('OK')

执行结果:

3.first,last方法:去最后一个值或第一个值,返回的是module对象

book = Book.objects.all().first()  # first出来的module可以直接去调对应的属性 last同理
print(book)
book = Book.objects.all().last()
print(book)
return HttpResponse('OK')

执行结果:

4.get 结果只能有且只有一个 返回的是module对象 调用的是QuerySet对象

# (4) get 结果只能有且只有一个  返回的是module对象  调用的是QuerySet对象
book = Book.objects.get(username='leogao') # get出来的module可以直接去调对应的属性
print(book.email)
return HttpResponse('OK')

执行结果:

5.exclude() 过滤!= 调用queryset对象,返回一个queryset对象

book = Book.objects.exclude(email='1823231344')
print(book)
return HttpResponse('OK')

执行结果:

6.order_by() 排序 ,调用queryset对象, 返回一个queryset对象

book = Book.objects.all().order_by('id')  # id是正序,-id是倒序  同样可以遍历
print(book)
for obj in book:print(obj.email)
return HttpResponse('OK')

执行结果:

7.reserve() 将排序倒转, 调用queryset对象, 返回一个queryset对象

book = Book.objects.order_by('-id').reverse()
print(book)
return HttpResponse('OK')

执行结果

8.count() 计算queryset中对象的个数 调用queryset对象, 返回一个int

book = Book.objects.all().count()
print(book)
return HttpResponse('OK')

执行结果

9.exist() 查看返回的querysert有没有值 调用queryset对象,返回布尔值

book = Book.objects.all().exists()
print(book)
return HttpResponse('OK')

执行结果

10.values 获取对应字段的值   调用queryset对象, 返回一个queryset对象

book = Book.objects.all().values('email', 'username')
print(book)
return HttpResponse('OK')

执行结果

11.values_list :将value的值放在一个元祖中  调用queryset对象, 返回一个queryset对象

book = Book.objects.all().values_list('password', 'username')
print(book)
return HttpResponse('OK')

执行结果

12.distinct: 将重复的结果去重  调用queryset对象, 返回一个queryset对象 从返回结果中剔除重复结果

book = Book.objects.all().values('email').distinct()
print(book) return HttpResponse('OK')

执行结果

好了以上就是一些常用的单表查询

如果您觉得好请点赞 谢谢!

django之orm单表查询的更多相关文章

  1. python 之 Django框架(orm单表查询、orm多表查询、聚合查询、分组查询、F查询、 Q查询、事务、Django ORM执行原生SQL)

    12.329 orm单表查询 import os if __name__ == '__main__': # 指定当前py脚本需要加载的Django项目配置信息 os.environ.setdefaul ...

  2. ORM单表查询,跨表查询,分组查询

    ORM单表查询,跨表查询,分组查询   单表查询之下划线 models.Tb1.objects.filter(id__lt=10, id__gt=1) # 获取id大于1 且 小于10的值models ...

  3. Django 模版语法 测试环境 ORM单表查询

    模版语法 传值 视图函数向前端html页面传值,基本上所有的数据类型都可以渲染在前端页面上. views.py from django.shortcuts import render, redirec ...

  4. Django【第6篇】:Django之ORM单表操作(增删改查)

    django之数据库表的单表查询 一.添加表记录 对于单表有两种方式 # 添加数据的两种方式 # 方式一:实例化对象就是一条表记录 Frank_obj = models.Student(name =& ...

  5. orm单表查询和模糊查询

    一.单表查询 1. 返回queryset对象的查询 all() 以列表形式返回全部queryset对象 filter(**kwargs) 筛选 exclude(**kwargs) 排除 reverse ...

  6. 057.Python前端Django模型ORM多表查询

    一 基于对象的查询 1.1 一对多查询 设计路由 from django.contrib import admin from django.urls import path from app01 im ...

  7. Django ORM单表查询必会13条

    必知必会13条 操作下面的操作之前,我们实现创建好了数据表,这里主要演示下面的操作,不再细讲创建准备过程 <1> all(): 查询所有结果 <2> filter(**kwar ...

  8. Django(ORM单表操作)

    默认使用sqllite数据库 修改为mysql数据库 创建数据库 在app models中编写创建数据库类 from django.db import models class Book(models ...

  9. Django框架ORM单表删除表记录_模型层

    此方法依赖的表是之前创建的过的一张表 参考链接:https://www.cnblogs.com/apollo1616/p/9840354.html 1.删除方法就是delete(),它运行时立即删除对 ...

随机推荐

  1. Angular *ngIf length

    Angular *ngIf length 在Angular中如何判断*ngIf Arrary的长度? 具体代码如下: result = []; <div class="kt-secti ...

  2. 部署docker镜像仓库及高可用

      下载地址: https://github.com/goharbor/harbor/releases   安装harbor服务器: 安装harbor root@harbor-vm1:/usr/loc ...

  3. Mysql实现定时清空一张表的旧数据并保留几条数据

    要达到如下目的: Mysql数据库会每隔一段时间(可以是2小时,也可以是一天,这个可以自定义),定时对一张库中的表做一个判断,如果这张表的数据超过了20条(这个数据也是自定义的,也可以是200条),就 ...

  4. (十五)、shell脚本之简单控制流结构

    一.基本的控制结构 1.控制流 常见的控制流就是if.then.else语句提供测试条件,测试条件可以基于各种条件.例如创建文件是否成功.是否有读写权限等,凡是执行的操作有失败的可能就可以用控制流,注 ...

  5. 高性能MySQL学习总结一

    一.MySQL逻辑架构 第一层的服务不是MySQL独有的,大多数是基于网络的客户端/服务端的工具,如连接处理.授权认证.安全等等. 第二层就是MySQL的核心功能,包括查询解析.分析.优化.缓存以及所 ...

  6. 还在使用Future轮询获取结果吗?CompletionService快来了解下吧。

    背景 二胖上次写完参数校验(<二胖写参数校验的坎坷之路>)之后,领导一直不给他安排其他开发任务,就一直让他看看代码熟悉业务.二胖每天上班除了偶尔跟坐在隔壁的前端小姐姐聊聊天,就是看看这些 ...

  7. [LeetCode]144. Binary Tree Preorder Traversal二叉树前序遍历

    关于二叉树的遍历请看: http://www.cnblogs.com/stAr-1/p/7058262.html /* 考察基本功的一道题,迭代实现二叉树前序遍历 */ public List< ...

  8. [leetcode]Q133Clone Graph

    克隆图记住:一个map一个queue,照葫芦画瓢BFS 找到一个节点就画一个对应的新的,用map对应,然后添加邻居,记录邻居到queue public UndirectedGraphNode clon ...

  9. 配置 nginx 访问资源目录,nginx配置 root 与 alias 的区别

    比如说想要把 /home/source 目录作为资源目录,那么需要如下配置: location /source/ { #识别url路径后,nginx会到/home/文件路径下,去匹配/source r ...

  10. java时间的一些处理

    获取当前时间 System.currentTimeMillis() //第一种 Date date = new Date(); System.out.println(date.getTime()); ...