首页 > 数据库 >Django——数据库2

Django——数据库2

时间:2023-06-08 13:45:47浏览次数:42  
标签:Students 数据库 Django filter objects print data age

Django——数据库2

添加数据

# 添加数据
# 1、使用create方法
# data = Students.objects.create(name='阿宸' , age=26 , gender='2' , height=1.79)
# 2、直接写入数据 , 写入完之后 , 必须使用save方法保存
data = Students(name='叶鹏飞' , age= 19 , gender='2' , height=1.75)
data.save()
data = Students(name='张迦博' , age= 22 , gender='2' , height=1.76)
data.save()
data = Students(name='注定' , age= 21 , gender='2' , height=1.77)
data.save()
data = Students(name='老黄' , age= 18 , gender='2' , height=1.80)
data.save()
data = Students(name='谢翔' , age= 20 , gender='2' , height=1.75)
data.save()

数据查询

# 查询数据
# select * from students
# 使用all() 方法 , 会返回数据表中多有数据。
# 返回一个QuerySet列表 , 列表中会将表中的每一行数据作为一个对象进行返回
data = Students.objects.all()
# print(data)
# 获取到对象数据for循环
for d in data:
    print(d.name , d.age , d.gender)
    # 获取到选项字段对应的数据: get_字段名_display()
    print(d.get_gender_display())
# values 、 values_list()
# 获取到返回对象的具体数据内容
# values 返回的是每个字典对象的数据内容
# data = Students.objects.all().values()
# print(data)
# values 返回的是每个元组对象的数据内容
data = Students.objects.all().values_list()
print(data)


# 排序:order_by() , 默认情况是升序排序
data = Students.objects.order_by('age')
for i in data:
    print(i.age)
# 降序排序在指定的属性名前面加上 '-'
print('*'*10)
data = Students.objects.order_by('-age')
for i in data:
    print(i.age)

# 反转:reverse() , 使用这个方法之前必须先排序
print('反转之后是情况')
data = Students.objects.order_by('age').reverse()
for i in data:
    print(i.age)

筛选数据

# 筛选数据
# filter()  相当于sql中的where
# data = Students.objects.filter(age=20)
# print(data.values())
# exclude() 返回不是指定字段的内容
# 与filter相反
data = Students.objects.exclude(age=20)
print(data.values_list())

返回单条数据

# 获取单行数据 get()
# get指定的条件在表字段中必须是唯一的 , 否则会抛出异常
data = Students.objects.get(id=7)
print(data.name , data.age , data.get_gender_display())

条件筛选

# 条件筛选
# 条件筛选时 , 字段名__条件=()
# exact()
data = Students.objects.filter(name__exact='阿宸')
print(data.values())

# _:匹配一个字符 %:匹配0个或者多个字符
# contains() , 相当于SQL中%
data = Students.objects.filter(name__contains='鹏')
# print(data.values())
# query是获取到对应操作的SQL语句
print(data.query)

# in 匹配指定的数据内容
# age = 20,21,22
data = Students.objects.filter(age__in=[20,21,22])
print(data)

# 大于gt或者大于等于gte
data = Students.objects.filter(age__gt=22)
print(data)
data = Students.objects.filter(age__gte=22)
print(data)

# 小于lt 小于等于lte
data = Students.objects.filter(age__lt=19)
print(data)
data = Students.objects.filter(age__lte=19)
print(data)

# between 19 and 26
# range(19,26) ,在django数据库中是可以取到最后一位的
data = Students.objects.filter(age__range=(19,26))
print(data)
for d in data:
    print(d.age)
    
# 匹配开头 startswith  相当于sql中: 阿%
data = Students.objects.filter(name__startswith='阿')
print(data)
# 匹配结尾的 endswith  %飞
data = Students.objects.filter(name__endswith='飞')
print(data)

数据修改

# 数据修改
# 要先获取去要修改的数据行 , 然后再进行修改
data = Students.objects.get(id=1)
# 使用返回的对象.属性进行赋值
data.age=27
# 这种方式一定要对数据进行保存
data.save()

# 使用update 可以修改一到多行数据
# 使用update修改是 , 查询的语句要使用filter
data = Students.objects.filter(id=5)
data.update(name='皮卡丘')

data = Students.objects.filter(id__in=[3,6])
data.update(name='东野圭吾')
# count() 获取数据条数
data = Students.objects.count()
print(data)
data = Students.objects.filter(id__in=[3, 6])
print(data.count())
# len 获取数据条数
data = Students.objects.all()
print(data)
print(len(data))

# 对返回的数据对象切片
data = Students.objects.all()[:2]
print(data)

删除数据

# 数据删除
# delete 删除数据
data= Students.objects.get(id=1).delete()
print(data)
data = Students.objects.all().delete()
print(data)
# & and 并且
data = Students.objects.filter(name='阿宸') & Students.objects.filter(age=26)
print(data)
data = Students.objects.filter(name__contains='飞'  , age__gt=18)
print(data)

# | or 或者
data = Students.objects.filter(name__contains='飞') | Students.objects.filter(age__gt=18)
print(data)

# 使用Q对象 使用操作&以及|。
from django.db.models import Q
# Q 对象中的参数是字段的条件数据
data = Students.objects.filter(Q(name__contains='飞') & Q(age__gt=18))
print(data)

data = Students.objects.filter(Q(name__contains='飞') | Q(age__gt=18))
print(data)

# 获取到age不等于22
data = Students.objects.filter(~Q(age=22))
print(data)

标签:Students,数据库,Django,filter,objects,print,data,age
From: https://www.cnblogs.com/fhy-blog/p/17466224.html

相关文章

  • Django——模板
    Django——模板模板:django对模板文件没有特别大的限制,html,txt,没有类型的文件。django提供一种动态生成html页面的快捷方式,也就是模板。模板语言(DTL)1、配置模板pycharm创建django项目会自动将我们的模板templates配置好。#django的默认模板引擎;django也支持并且内......
  • 图数据库HugeGraph——这个无非是利用cassandra+ES作为后端来做的图数据库,支持分布式
    HugeGraph介绍#以下引自官方文档:CopyHugeGraph是一款易用、高效、通用的开源图数据库系统(GraphDatabase,GitHub项目地址),实现了ApacheTinkerPop3框架及完全兼容Gremlin查询语言,具备完善的工具链组件,助力用户轻松构建基于图数据库之上的应用和产品。HugeGraph支持百亿以上的顶点......
  • KingbaseES数据库配置Hikari数据源
     Hikari是一个高性能的数据库连接池,它是SpringBoot2.x中的默认数据源。一、下载驱动打开下面网址:选择对应平台的jdbc驱动程序。人大金仓-成为世界卓越的数据库产品与服务提供商(kingbase.com.cn)这里以x86平台为例:下载完成后目录里面包含以下文件:根据项目的JDK版本选择......
  • 008 数据库学习笔记--触发器
    主要内容来自:https://blog.csdn.net/KingCruel/article/details/106292310https://blog.csdn.net/qq_36330228/article/details/90582493触发器:触发器,可理解为一种特殊的存储过程。是一个特殊的事务(在执行过程中,可执行一些检查或设置条件,不满足时,可回滚操作)存储过程,通过存......
  • 10_How deploy a Django application using Nginx & Gunicorn in Production
     地址:https://www.codewithharry.com/blogpost/django-deploy-nginx-gunicorn/  HowtohostDjangoApplicationusinggunicorn&nginxinProductionInthispost,wewillseehowtousenginxwithgunicorntoservedjangoapplicationsinproduction. Dj......
  • Django实现crontab远程任务管理系统
    前面有文章介绍过使用django-crontab和apscheduler模块管理Django本身应用的定时任务。注意这里说的是Django本身应用的定时任务,也就是说定时任务本身是Django应用中的对应的函数功能。• django任务管理之crontab[1]• django任务管理-apscheduler[2]这里也大概总结下dja......
  • JAVA的springboot+vue企业客户信息反馈平台,附源码+数据库+文档+PPT
    1、项目介绍企业客户信息反馈平台能够通过互联网得到广泛的、全面的宣传,让尽可能多的用户了解和熟知企业客户信息反馈平台的便捷高效,不仅为客户提供了服务,而且也推广了自己,让更多的客户了解自己。对于企业客户信息反馈而言,若拥有自己的平台,通过平台得到更好的管理,同时提升了形象......
  • 软测5班数据库基础知识
    函数:字符串函数charindex('查找内容','源字符串'[,起始位置]),返回值为查找到的内容首字母所在的位置,如果未找到返回0。len('字符串'),返回字符串长度。lower('字符串'),返回小写字母。upper('字符串'),返回大写字母。ltrim('字符串'),返回去除字符串左边空格。rtrim('字符串'),返......
  • clickhouse读写数据库3-- clickhouse_driver 模块
    这是用百度的文心一言生成的代码。刚开始2次都是错误的,明确指出clickhouse_driver没有占位符,让AI重新生成。重新生成了2次之后,才得到正确代码  #!/usr/bin/envpython#-*-coding:utf-8-*-#author:henry#desc:整理clickhouse读写的范例,方便日后读写click......
  • 性能测试-批量向数据库中构造数据(10万条)
    通过存储过程向数据库sys_member表中插入10万条数据:向苏汽系统中Mysql插入批量数据(构造10万条数据):第1种方法:通过存储过程实现DROPPROCEDUREIFEXISTSmy_insert;CREATEPROCEDUREmy_insert()BEGINDECLAREnintDEFAULT0;loopname:LOOPinse......