1. mysql 表使用的功能有: 增 删  改 查  这几大功能, 但是mysql 和django 对接之后,使用的语法不是原生的SQL语法.

2. 增功能的实现:

User.objects.create(name='Owen', age=10, birthday='2008-08-08')

3. 查的功能 使用的是filter 关键词

# 操作的结果拥有是一个list
users = User.objects.filter(name='Owen')

4. 改的功能 通过django的语句可以直接修改mysql的数据

User.objects.filter(name='Owen').update(name='Owen_best')

5. 删除的功能

User.objects.filter(name='Owen').delete()

6. 单表操作对应的函数: 很重要!!!!重视!!!

1. all():查询所有结果list,支持正向索引取值[i],支持索引切片[m:n]
2. filter(**kwargs):查询满足条件的所有结果list
3. get(**kwargs):查询满足条件的唯一对象obj,查询结果不为obj则抛出异常
4. exclude(**kwargs):查询满足条件的对立面的所有结果list
5. order_by(*field):查询按照指定字段进行排序后的所有结果list,'tag_name'代表正序,'-tag_name'代表降序
6. reverse():反转排序查询的所有结果list
7. count():统计返回查询结果list的长度
8. first():返回查询结果中的第一个对象obj
9. last():返回查询结果中的最后一个对象obj
10. exists():判断查询结果是否存在,值为布尔类型
11. values(*field):按照指定字段(们)进行查询,返回存放包含字段(们)的字典的列表list
12. values_list(*field):同values类似,返回存放数据的元组的列表list
13. distinct():从查询结果中剔除重复字段(一般和values结合使用)

很重要的知识点

7. 模糊查询案例:

user_list = User.objects.filter(id__gte=1)    #案例

# 整型相关
age__exact=8 # 确切匹配8
age__in=[8, 10] # 8或10
age__gt=8 # 大于8
age__gte=8 # 大于等于8
age__lt=8 # 小于8
age__lte=8 # 小于等于8
age__range=[8, 10] # 8到10之间
age__isnull=0|1 # 0:is not null | 1:is null # 字符串相关
name__startswith # 后方模糊匹配
name__endswith # 前方模糊匹配
name__contains # 前后方均模糊匹配
name__regex # 正则匹配
name__istartswith # 不区分大小写后方模糊匹配(i开头就是不区分大小写) # 时间相关
birthday__year=2008 # 时间年份模糊匹配

模糊查询

8. Django特有的查询模式, F模式 查询与 Q查询模式

from django.db.models import F, Q
# F基于计算 F('字段名')
# 案例一:将id为1的结果年龄增加1
User.objects.filter(id=1).update(age=F('age')+1)
# 案例二:查询id是年龄1/4的结果
user = User.objects.filter(id=F('age')/4) # Q基于关系 Q('字段条件')
# 与
User.objects.filter(Q(id=1) & Q(age=10)) # id=1 并且 age=10
# 或
User.objects.filter(Q(id=1) | Q(id=2)) # id=1 或 id=2
# 非
User.objects.filter(~Q(id=1)) # id 不为 1

9. 单表查询案例分析使用

# 2. 查询所有的,并支持正向 的切片工作
# 支持正向所有(不支持反向索引,原因是数据过多时,不能将数据一次性查出,需要分批次按需求查出)
# u5 = User.objects.all()[0]
# print(u5) # 3.支持切片
#
# u_l1 = User.objects.all()[1:3]
# print(u_l1)
# print(u_l1.query) # 4. 查询结果 出来并取反: exclude
# # 2. exclude(**kwargs):查询满足条件的对立面的所有结果list
# u_l2 = User.objects.exclude(id=1)
# print(u_l2)
# print(u_l2.query)
# # 显示除了id=1 的所有成员信息
#
# 5. 查询出来的列表组,并进行升序 或降序 :order_by
#
# # 3. order_by(*field):查询按照指定字段进行排序后的所有结果list,'tag_name'代表正序,'-tag_name'代表降序
# u_l3 = User.objects.order_by('-id')
# print(u_l3)
# print(u_l3.query)
# #('id') 是根据id 进行升序排列
# #('-id') 是根据id 进行降序排列
#
# 6.统计查询出来的列表的里面的个数: count()
# # 5. count():统计返回查询结果list的长度
# count = User.objects.all().count()
# print(count)
#
# 7. 判断查询出来的是否存在: exists()
# # 6. exists():判断查询结果是否存在,值为布尔类型
# res = User.objects.filter(id=10).exists()
# print(res)
#
#
# 8. 通过指定的字段进行查询, 结果还是为列表信息: values
# # 7. values(*field):按照指定字段(们)进行查询,返回存放包含字段(们)的字典的列表list
# u_l5_dic = User.objects.values('name', 'age')[1:3]
# # print(u_l5_dic.query)
# print(u_l5_dic)
# # 注意使用values 不能使用你query 优化信息
#
# 9.通过指定的字段进行查询, 结果还是为列表信息: values_list 显示的是元祖形式, 可以切片得到想要的对象属性
# # 8. values_list(*field):同values类似,返回存放数据的元组的列表list
# u_l6_dic = User.objects.values_list('name', 'age')[1:3] # [0][1] 第一个元组中的第二个数据,年龄
# print(u_l6_dic)
#
# #[1:3]是查询出来的取 1,2 元祖形式
# #[0][1] 是因为查询出来有2个结果, [0] 是取第一个结果, [1] 是取第一个结果里面的第二个属性
# # 字符串
# u_l12 = User.objects.filter(name__startswith='X') # 取开头为X
# print(u_l12)
# u_l13 = User.objects.filter(name__istartswith='x') # 取开头不是为x的信息, 前面有i 就是取反的意思
# print(u_l13)
# u_l14 = User.objects.filter(name__endswith='hh')
# print(u_l14)
# u_l15 = User.objects.filter(name__icontains='g') #模糊取值
# print(u_l15)
# u_l16 = User.objects.filter(name__iregex="[a-zA-Z0-9]{1,}") #正则表达式
# print(u_l16)

案例分析

Django 之单个mysql表使用的更多相关文章

  1. Django之集合函数使用与mysql表的创建特殊字段分析

    1. 集合函数的使用场景: -- 单独使用: 不分组, 只查聚合结果 -- 分组使用: 按字段分组, 可查询分组字段与聚合结果 2. 导入聚合函数 from django.db.models impo ...

  2. MySQL 备份恢复(导入导出)单个 innodb表

    MySQL 备份恢复单个innodb表呢,对于这种恢复我们我们很多朋友都不怎么了解了,下面一起来看一篇关于MySQL 备份恢复单个innodb表的教程 在实际环境中,时不时需要备份恢复单个或多个表(注 ...

  3. Django之mysql表单操作

    在Django之ORM模型中总结过django下mysql表的创建操作,接下来总结mysql表记录操作,包括表记录的增.删.改.查. 1. 添加表记录 class UserInfo(models.Mo ...

  4. django中 对Mysql数据库的建表

    Django操作Mysql数据库: 1.1 在settings中,配置数据库相关参数,所以无需修改,这里我们看一下: DATABASES = { 'default': { # 这里可以指定使用的数据库 ...

  5. Django 之 文件配置、pycharm及django连接数据库、创表及表的增删改查02

    目录 创建项目后的文件夹配置 静态文件配置 接口前缀动态绑定 form表单回顾 根据请求方式的不同,返回前端不同的信息 pycharm 连接MYSQL数据库 Django 连接MYSQL数据库的配置 ...

  6. MySQL表的四种分区类型

    MySQL表的四种分区类型 一.什么是表分区 通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了. 如:某用户表的记录超过了600万条,那么就可以根据入库日期将表 ...

  7. MySQL 表分区详解MyiSam引擎和InnoDb 区别(实测)

    一.什么是表分区通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了.如:某用户表的记录超过了1000万条,那么就可以根据入库日期将表分区,也可以根据所在地将表分区 ...

  8. MySQL表类型和存储引擎版本不一致解决方法

    使用的是老版本的mysql客户端Navicate 8 ,mysql 服务端用的是mysql5.6的版本,在修改版本引擎的时候出现版本不对; mysql error ‘TYPE=MyISAM’ 解决办法 ...

  9. Django+Nginx+MongoDB+Mysql+uWsgi的搭建

    搭建目标如下: 图:系统架构图 这个系统可以提供web服务及其它查询应用服务,我用其做一个二手房信息搜集.处理及分发的系统,可以通过浏览器访问,也可以通过定制的客户端进行访问. 一.安装篇 1.下载安 ...

随机推荐

  1. bzoj 4866: [Ynoi2017]由乃的商场之旅

    设第i个字母的权值为1<<i,则一个可重集合可以重排为回文串,当且仅当这个集合的异或和x满足x==x&-x,用莫队维护区间内有多少对异或前缀和,异或后满足x==x&-x,这 ...

  2. 指定分隔符连接数组元素join()

    join()方法用于把数组中的所有元素放入一个字符串.元素是通过指定的分隔符进行分隔的. 语法: arrayObject.join(分隔符) 参数说明: 注意:返回一个字符串,该字符串把数组中的各个元 ...

  3. Java-Runoob-高级教程-实例-方法:07. Java 实例 – instanceOf 关键字用法

    ylbtech-Java-Runoob-高级教程-实例-方法:07. Java 实例 – instanceOf 关键字用法 1.返回顶部 1. Java 实例 - instanceof 关键字用法   ...

  4. K近邻(K Nearest Neighbor-KNN)原理讲解及实现

    算法原理 K最近邻(k-Nearest Neighbor)算法是比较简单的机器学习算法.它采用测量不同特征值之间的距离方法进行分类.它的思想很简单:如果一个样本在特征空间中的k个最近邻(最相似)的样本 ...

  5. 【ZZ】谈谈持续集成,持续交付,持续部署之间的区别

    谈谈持续集成,持续交付,持续部署之间的区别 http://blog.flow.ci/cicd_difference/ 谈谈持续集成,持续交付,持续部署之间的区别 2016年08月03日 标签:beta ...

  6. 廖雪峰Java3异常处理-2断言和日志-3使用Commons Logging

    Commons Logging是Apache创建的日志模块: 可以挂接不同的日志系统 可以通过配置文件指定挂接的日志系统 自动搜索并使用Log4j 如果Log4j不存在,使用JDK Logging(J ...

  7. go语言笔记——切片函数常见操作,增删改查和搜索、排序

    7.6.6 搜索及排序切片和数组 标准库提供了 sort 包来实现常见的搜索和排序操作.您可以使用 sort 包中的函数 func Ints(a []int) 来实现对 int 类型的切片排序.例如  ...

  8. webpack + vuejs(都是1.0的版本) 基本配置(一)

    开始之前 本文包含以下技术,文中尽量给与详细的描述,并且附上参考链接,读者可以深入学习: 1.webpack12.Vue.js13.npm4.nodejs —- 这个就不给连接了,因为上面的连接都是在 ...

  9. windows server 2008 R2 安装

    微软服务器操作系统大致有: server 2000(简称2K),还有server 2003(2K3),server 2008(2K8),server 2000和2003是基于NT内核的,而2008是基 ...

  10. java打印实心10*10正方形, 空心10*10正方形

    public class PrintSquare { public static void main(String[] args) { printSolidSquare(10); System.out ...