欢迎访问个人博客http://www.jkraise.top
有两种方式,进行 shell 操作
- 在命令行终端 进行操作, 但是没有不全以及提示
python manage.py shell # 进行命令行操作
- 在Python终端进行操作 提前导入所需的models
from 子应用的models文件 import model类
from bookdata.models import BookInfo, HeroInfo
查询数据库 (增删改查)
增加 删除 修改的 两种方式
md = model类()
md.属性 = xxx
md.save()
model.objects.create(xxx1='ssss', 字段名='xxxx')
# 修改
model.objects.filter(条件).update(字段名='xxxx')
# 删除
hzhu = HeroInfo.objects.get(id = 18)
hzhu.delete()
sha_li = HeroInfo.objects.filter(id = 19)
sha_li.delete()
-
基本查询
模型类.objects.get(条件) 模型类.objects.all() # 查询多个结果
-
条件查询
模型类.objects.filter(条件) # 等于 exact 模型类.objects.filter(id__exact=1) # 包含 模型类.objects.filter(stu_name__contains='龙') # 以'部'结尾 模型类.objects.filter(stu_name__endswith='部') # 不为空 模型类.objects.filter(stu_name__isnull=False) 查询编号为1或3或5的图书 BookInfo.objects.filter(id__in = [1,3,5,6]) 查询编号大于3的图书 BookInfo.objects.filter(id__gt = 3) BookInfo.objects.filter(id__lte = 3) BookInfo.objects.exclude(id__gt = 3) 查询1980年发表的图书 BookInfo.objects.filter(bpub_date__year = 1980) 查询1990年1月1日后发表的图书 BookInfo.objects.filter(bpub_date__gt = '1990-1-1')
-
聚合函数
Avg Count Sum Max Min from django.db.models import Avg, Count, Sum, Max, Min 查询总阅读量 BookInfo.objects.aggregate(Sum('bread')) 查询最大的阅读量 BookInfo.objects.aggregate(Max('bread')) BookInfo.objects.aggregate(Count('bread')) ``` - 求数量时 可以直接用count函数 ```
-
排序
Tbstu.objects.all().order_by('bread') Tbstu.objects.all().order_by('-bread') # 倒序
-
F Q 对象的查询
Tbstu.objects.filter(bread__gte = F('bcomment'))
提问
-
get filter区别
get 只能查询一个数据 filter 能查询出多个数据,是个列表的结构
-
F Q 对象的作用
F 实现属性之间的比较 Q 实现mysql and or not
最常用的 一对多的 数据查询
最常用的 多对一的 数据查询
- 直接使用外键
关联过滤查询
关联模型类小写的__属性名__条件运算符 = xxx
books = BookInfo.objects.filter(herinfo__hname='郭靖')
books[0]
- 查询图书 书的英雄描述包含 ‘靖’
BookInfo.objects.filter(herinfo__hname__contains='靖')