5.单表操作

Outback Outback     2022-11-07     807

关键词:

一、基本增删改查操作

   

models.Tb1.objects.create(c1=‘xx‘, c2=‘oo‘)

# 增加一条数据,可以接受字典类型数据 ** kwargs

obj = models.Tb1(c1=‘xx‘, c2=‘oo‘)

obj.save()

#

models.Tb1.objects.get(id=123) # 获取单条数据,不存在则报错(不建议)

models.Tb1.objects.all() # 获取全部

models.Tb1.objects.filter(name=‘seven‘) # 获取指定条件的数据,如果没有就返回一个空的QerrySet

返回的数据是QerrySet类型。我们可以理解成列表,所以可以用切片处理。objects是数据库管理器。

   

degree = models.CharField(choices=(("cj", u"初级"), ("zj", u"中级"), (‘gj‘, u"高级")), verbose_name=u"课程难度", max_length=2)

这种情况下,在django中如果直接用course.degree 的话会显示cj,zj,gj,如果我们想要显示初级,高级等,可以用course.get_degree_display 方法。这是一种固定写法,中间的degree是字段名字。是专门针对choice字段的显示。

   

#

objs=models.Tb1.objects.filter(name=‘seven‘)

objs.delete() # 删除指定条件的数据,也即是删除整个QerrySet的数据

for obj in objs:

obj.delete # 删除单条数据

#

models.Tb1.objects.filter(name=‘seven‘).update(gender=‘0‘) # 将指定条件的数据更新,均支持 **kwargs

   

obj = models.Tb1.objects.get(id=1)

obj.c1 = ‘111‘

obj.save()# 修改单条数据

   

二、进阶操作

了不起的双下划线,利用双下划线将字段和对应的操作连接起来

models.Tb1.objects.filter(name=‘seven‘).count() # 获取个数

   

# 大于,小于

   

models.Tb1.objects.filter(id__gt=1) # 获取id大于1的值

models.Tb1.objects.filter(id__gte=1) # 获取id大于等于1的值

models.Tb1.objects.filter(id__lt=10) # 获取id小于10的值

models.Tb1.objects.filter(id__lte=10) # 获取id小于10的值

models.Tb1.objects.filter(id__lt=10, id__gt=1) # 获取id大于1 且 小于10的值

   

# in

   

models.Tb1.objects.filter(id__in=[11, 22, 33]) # 获取id等于112233的数据

models.Tb1.objects.exclude(id__in=[11, 22, 33]) # not in

   

# isnull

Entry.objects.filter(pub_date__isnull=True)

   

# contains

   

models.Tb1.objects.filter(name__contains="ven")

models.Tb1.objects.filter(name__icontains="ven") # icontains大小写不敏感

models.Tb1.objects.exclude(name__icontains="ven")

   

# range

   

models.Tb1.objects.filter(id__range=[1, 2]) # 范围bettwen and. 其他类似 startswithistartswith, endswith, iendswith,

   

# order by

   

models.Tb1.objects.filter(name=‘seven‘).order_by(‘id‘) # asc

models.Tb1.objects.filter(name=‘seven‘).order_by(‘-id‘) # desc

   

# group by

   

from django.db.models import Count

   

models.Tb1.objects.filter(c1=1).values(‘id‘).annotate(c=Count(‘num‘))

相当于:

SELECT "app01_tb1"."id", COUNT("app01_tb1"."num") AS "c" FROM "app01_tb1" WHERE "app01_tb1"."c1" = 1 GROUP BY "app01_tb1"."id"

   

# limit offset

   

models.Tb1.objects.all()[10:20]

   

# regex正则匹配,iregex 不区分大小写

   

Entry.objects.get(title__regex=r‘^(An?|The) +‘)

Entry.objects.get(title__iregex=r‘^(an?|the) +‘)

   

# date

   

Entry.objects.filter(pub_date__date=datetime.date(2005, 1, 1))

Entry.objects.filter(pub_date__date__gt=datetime.date(2005, 1, 1))

   

# year

   

Entry.objects.filter(pub_date__year=2005)

Entry.objects.filter(pub_date__year__gte=2005)

   

# month

   

Entry.objects.filter(pub_date__month=12)

Entry.objects.filter(pub_date__month__gte=6)

   

# day

   

Entry.objects.filter(pub_date__day=3)

Entry.objects.filter(pub_date__day__gte=3)

   

# week_day

   

Entry.objects.filter(pub_date__week_day=2)

Entry.objects.filter(pub_date__week_day__gte=2)

   

# hour

   

Event.objects.filter(timestamp__hour=23)

Event.objects.filter(time__hour=5)

Event.objects.filter(timestamp__hour__gte=12)

   

# minute

   

Event.objects.filter(timestamp__minute=29)

Event.objects.filter(time__minute=46)

Event.objects.filter(timestamp__minute__gte=29)

   

# second

   

Event.objects.filter(timestamp__second=31)

Event.objects.filter(time__second=2)

Event.objects.filter(timestamp__second__gte

   

三、其他操作

1F 操作

# An object capable of resolving references to existing query objects

   

from django.db.models import F

models.Tb1.objects.update(num=F(‘num‘) + 1)

   

2Q方法(或操作)

   

Q(nid__gt=10)

Q(nid=8) | Q(nid__gt=10)

Q(Q(nid=8) | Q(nid__gt=10)) & Q(caption=‘root‘)

   

3、执行原生SQL

   

from django.db import connection

   

cursor = connection.cursor() # cursor = connections[‘default‘].cursor()

cursor.execute("""SELECT * from auth_user where id = %s""", [1])

row = cursor.fetchone()

   

   

django之单表操作(代码片段)

1.查询方法:<1>all():查询所有结果<2>filter(**kwargs):它包含了与所给筛选条件相匹配的对象<3>get(**kwargs):返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出... 查看详情

模型层单表操作(代码片段)

模型层单表操作单表操作例:1.单表的查询1.单表查询所有用户:models.Book.objects.all()得到的是queryset对象(当成列表),列表里面,一个一个的对象[user1,user2]?2.render(request,‘booklist.html‘,‘book_list‘:ret)?3.模板里:%foruserinbook_list%#要循环的... 查看详情

mysql单表操作(代码片段)

文章目录MySQL单表操作一、排序二、聚合函数三、分组四、limit关键字MySQL单表操作一、排序语法格式说明SELECT字段名FROM表名[WHERE字段=值]ORDERBY字段名[ASC]ASC表示升序排序(默认)SELECT字段名FROM表名[WHERE字段=值]ORDERBY字段名[DES... 查看详情

mysql单表操作(代码片段)

文章目录MySQL单表操作一、排序二、聚合函数三、分组四、limit关键字MySQL单表操作一、排序语法格式说明SELECT字段名FROM表名[WHERE字段=值]ORDERBY字段名[ASC]ASC表示升序排序(默认)SELECT字段名FROM表名[WHERE字段=值]ORDERBY字段名[DES... 查看详情

单表多表操作

一、单表操作1.1在python的脚本下调用Django环境test.py1.2用orm创建表models.py数据的迁移操作python3manage.pymakemigrations#只是对变化做一个记录,记录文件在app的migrations文件夹下python3manage.pymigrate     #把更改提交到数据库python3manage.... 查看详情

15-5单表查询

一查询语法介绍(单表查询)1语法SELECT字段1,字段2...FROM表名WHERE条件GROUPBYfieldHAVING筛选ORDERBYfieldLIMIT限制条数2关键字的执行优先级(重点)重点中的重点:关键字的执行优先级从上到下fromwheregroupbyhavingselectdistinctorderbylimit说明:1.... 查看详情

查询语句select[单表操作](代码片段)

---SQL单表简单查询1、单表操作&别名的使用1--查询表的所有数据:select*from表名;通配符*代表所有2select*fromemp;1--查询表中指定字段的值:select字段名1,字段名2,...from表名;2selectempno,ename,job,sal,hiredate,commfromemp;1--查询结果中的字段... 查看详情

django---进阶5(代码片段)

目录单表操作必知必会13条测试脚本查看内部sql语句的方式神奇的双下划线查询一对多外键增删改查多对多外键增删改查正反向的概念多表查询子查询(基于对象的跨表查询)联表查询(基于双下划线的跨表查询)周末作业单表操作#dj... 查看详情

母版,单表操作

上节回顾:(模板层) 1模板之变量--- -支持数字,字符串,布尔类型,列表,字典---相当于对它进行了打印 -函数--->相当于加括号运行(不能传参数) -对象--->内存地址,(如果重写__str__方法,打印的就是返回的内容) 2过滤器 -length---计... 查看详情

数据库:数据操作-单表查询

一单表查询的语法select字段1,字段2....from表名where条件groupbyfieldhaving筛选orderbyfieldlimit限制条数  二关键字的执行优先级(重点)关键字的执行优先级fromwheregroupbyhavingselectdistinctorderbylimit  1.找到表:from2.拿着where指定的约束... 查看详情

17-2orm单表操作和多表操作(代码片段)

参考:https://www.cnblogs.com/liwenzhou/p/8660826.html一 ORM单表操作1增删改查11.查询21.查所有3models.Publisher.objects.all()42.查某个具体的记录5models.Publisher.objects.get(id=1)-->注意查询条件不成立就报错62.删除一条记录7models.Publish 查看详情

mybatis实现单表增删改查操作

mybatis是对持久层进行了封装、mybatis文档地址:https://mybatis.org/mybatis-3/zh/index.html下面实现单表的增删改查操作。1.新建maven项目命名为mybatis、并在pom.xml中引入相关依赖<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.ap 查看详情

学员管理示例——班级管理(单表操作)(代码片段)

一、新建views文件夹  1、新建views文件夹目的:给不同管理的操作分类,比如班级操作归为一类。   2、必须删除原来的views,以免路径搜索不到新建views文件夹  3、创建classes.py文件 二、操作流程(URL->函数->... 查看详情

单表操作(代码片段)

添加表纪录方式1 #create方法的返回值book_obj就是插入book表中的python葵花宝典这本书籍纪录对象book_obj=Book.objects.create(title="python葵花宝典",state=True,price=100,publish="苹果出版社",pub_date="2012-12-12")方式2方式2book_obj=Book(title="python葵花... 查看详情

ogg单表初始化操作步骤

 认识logdump分析工具及常用命令:http://book.51cto.com/art/201202/319253.htmhttp://www.killdb.com/2012/09/01/goldengate-%E5%AD%A6%E4%B9%A0%E7%B3%BB%E5%88%974-logdump.html在OGG中,报ORA-01403:nodatafound,原因一般就是源端要 查看详情

django基础五之django模型层单表操作(代码片段)

ORM单表操作类---表类对象---一行数据类属性---字段 增创建记录方式1student_obj=models.Student(name=‘dazhaung‘,age=23,)student_obj.save()创建记录方式2new_obj=models.Student.objects.create(name=‘xiaozhuang2‘,age=6)#写成**‘name‘:‘xx‘ 查看详情

django模型层:单表多表操作f与q查询(代码片段)

DJango模型层单表操作使用有几步:settings.py中配置连接数据库的地址,端口在init.py中使用pymysql在models.py里写类,一个类对应一个表,写属性数据库迁移命令,第一个命令是纪录,第二个命令才是真正的数据库同步导入models到views... 查看详情

13.django(单表操作:增简单查询删改补天字段问题)

单表操作—增再次明确orm与mysql的对应关系orm          mysql类           表类中的属性      查看详情