修改mysql的日志文件
这个操作是为了产生mysql.log文件,里面记录对MySQL数据库的操作记录。
- 使用下面的命令行去修改配置文件,去除68、69行注释,保存
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf - 重启mysql服务 产生日志文件 sudo service mysql restart
- 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'))
接下来就要讲一下模板类、视图类的使用,希望能一次总结完。