这几天重新学习了一下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. ActiveMq PUT任意文件上传漏洞(CVE-2016-3088)漏洞复现

    漏洞原理 该漏洞出现在fileserver应用中,ActiveMQ中的fileserver服务允许用户通过HTTP PUT方法上传文件到指定目录.Fileserver支持写入文件(不解析jsp),但是 ...

  2. k8s应用环境

    1.7:k8s应用环境: 1.7.1:dashboard(1.10.1) 部署kubernetes的web管理界面dashboard 参考文档: https://www.jianshu.com/p/4 ...

  3. Dubbo服务引用源码解析③

    ​ 上一章分析了服务暴露的源码,这一章继续分析服务引用的源码.在Dubbo中有两种引用方式:第一种是服务直连,第二种是基于注册中心进行引用.服务直连一般用在测试的场景下,线上更多的是基于注册中心的方式 ...

  4. 推荐使用并手写实现redux-actions原理

    @ 目录 一.前言 二.介绍 2.1 创建action 2.2 reducer 2.3 触发action 三. 认识与手写createAction() 3.1 用法 3.2 原理实现 四.认识hand ...

  5. spring mvc 集成quartz

    首先quartz配置文件 # Default Properties file for use by StdSchedulerFactory # to create a Quartz Scheduler ...

  6. [leetcode]53Maximum Subarray动态规划经典题目:最大子串问题

    /** * Find the contiguous subarray within an array (containing at least one number) * which has the ...

  7. java JButton按钮始终居中

    怎么做的拖动窗口内部的按钮始终居中呢? 很简单把按钮放入Box中进行了. 代码如下: import javax.swing.Box; import javax.swing.JButton; impor ...

  8. 企业集群架构-03-NFS

    NFS 目录 NFS NFS基本概述 NFS应用场景 NFS实现原理 NFS总结 NFS服务端安装 环境准备 服务端安装NFS 服务端NFS配置 服务端开机自启 服务端验证配置 NFS客户端挂载卸载 ...

  9. Python解释器和IPython

    目录 简介 Python解释器 IPython 魔法函数 运行和编辑 Debug History 运行系统命令 简介 今天给大家介绍一下Python的一个功能非常强大的解释器IPython.虽然Pyt ...

  10. fastjsion反序列化漏洞渗透测试笔记

    本文原创地址:https://www.cnblogs.com/yunmuq/p/14268028.html 一.背景 fastjsion是阿里的开源Java工具:https://github.com/ ...