Django框架的学习(三)

修改mysql的日志文件

这个操作是为了产生mysql.log文件,里面记录对MySQL数据库的操作记录。

  1. 使用下面的命令行去修改配置文件,去除68、69行注释,保存
    sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
  2. 重启mysql服务 产生日志文件 sudo service mysql restart
  3. sudo tail -f /var/log/mysql/mysql.log 可以实时查看日志文件
    (tail 命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。)

一、模型类查询及其相关函数

这些函数可以让我们少写一些MySQL语句,但是本质还是这些数据库交互语言。

函数名功能返回值说明
get返回表中满足条件的一条且只能有一条数据。返回值是模型类对象参数中写查询条件。1)如果查到多条数据,则抛异常MultipleObjectsReturned。2)查询不到数据,则抛异常:DoesNotExist。
all返回模型类对应表格中的所有数据。返回值是QuerySet类型查询集
filter返回满足条件的数据。返回值是QuerySet类型参数写查询条件。
exclude返回满足条件的数据。返回值是QuerySet类型参数写查询条件。
order_by对查询结果进行排序。返回值是QuerySet类型参数中写根据哪些字段进行排序。

查询集对象(QuerySet)可以拿来遍历,切片的时候不允许下标为负,否则报错。

参数中可以写查询条件的,条件的格式:
模型类属性名_ _条件名=值 (双下划线)

条件名:
1.判等 条件名: exact

例:查询编号为1的图书。 BookInfo.objects.get(id__exact=1)
在使用判等的条件名的时候可省略掉

2.模糊查询

(1) 包含某个字符的查询 contains

例:查询书名包含’传’的图书。 BookInfo.objects.filter(btitle__contains=‘传’)

(2) 开头和结尾 ,以什么开头用startswith 以什么结果endswith

例: 查询以 ‘部’ 结尾 BookInfo.objects.filter(btitle__endswith=‘部’)

例: 查询以 ‘雪’ 结尾 BookInfo.objects.filter(btitle__startswith=‘雪’)

(3)空查询 isnull 查询不为空让参数等于False,查询为空的让参数等于True

例:查询书名不为空的图书。BookInfo.objects.filter(btitle__isnull=False)

(4)范围查询 in 范围在列表里面

例: 查询id为 1 或3 或5 的图书 BookInfo.objects.filter(id__in=[1,3,5]) 参数等于的是一个列表

(5)比较查询 大于 gt (greate than) 小于 lt (less than) 大于等于 gte(equal)
小于等于 lte

例: 查询id大于3 的结果 BookInfo.objects.filter(id__gt=3)

例:查询id小于等于4的结果 BookInfo.objects.filter(id__lte=4)

其他的类似

(6) 日期查询

__year : 查询年 _month: 查询月

例: 查询图书发表日期在 1980年 BookInfo.objects.filter(bpub_date__year=1980)

查询日期大于某个时间点的 利用比较查询

例: 查询发表日期 大于1980年1月1日的
BookInfo.objects.filter(bpub_date__gt = date(1980,1,1))

二、F对象和Q对象

Q对象

Q对象是Django对model查询中所使用的关键字参数进行封装后的一个对象。
Q对象可以通过 &(与)、 |(或)、 ~(非)运算来组合生成不同的Q对象,便于在查询操作中灵活地运用。

from django.db.models import Q

#查询作者是 小明 或 作者姓名包含 红 的书籍
ret1 = BookInfo.objects.filter(auth="小明")
ret2 = BookInfo.objects.filter(auth__contains="红") 
#使用Q对象进行查询
q = Q(Q(name="小明"|Q(name__contains="红"))
ret = BookInfo.objects.filter(q)

F对象

F对象通常是对数据库中的字段值在不获取的情况下进行操作

# 比如说小明火了,我们对他的书都涨价10元
from django.db.models import F

all = BookInfo.objects.filter(auth="小明")
for b in all:
    price = b.price
    b.price = price + 10
    b.save
# 使用F对象来计算
BookInfo.objects.filter(auth="小明").update(price=F("price")+10)

这部分参考文档链接:https://blog.csdn.net/qq_37049781/article/details/80931680

三、聚合函数

Django 的django.db.models 模块提供聚合函数,需要提前引用;在QuerySet 为空时,聚合函数函数将返回None。

from django.db.models import Sum,Count,Max,Min,Avg

aggregate:调用这个函数来使用聚合。 返回值是一个字典

# 例:查询所有图书的数目。
BookInfo.objects.all().aggregate(Count('id'))

接下来就要讲一下模板类、视图类的使用,希望能一次总结完。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值