首页 > 其他 > 详细

django查询相关的相关操作

时间:2020-06-10 18:44:46      阅读:43      评论:0      收藏:0      [点我收藏+]

参考django官方文档中执行查询模块进行实践操作整理的结果:https://docs.djangoproject.com/zh-hans/3.0/topics/db/queries/#falling-back-to-raw-sql

一、查看django操作数据库时执行的原生SQL语句

在项目settings中加上日志输入的如下配置:

技术分享图片
LOGGING = {
    version: 1,
    disable_existing_loggers: False,
    handlers: {
        console:{
            level:DEBUG,
            class:logging.StreamHandler,
        },
    },
    loggers: {
        django.db.backends: {
            handlers: [console],
            propagate: True,
            level:DEBUG,
        },
    }
}
View Code

 控制台即可输出对应的SQL语句:

技术分享图片

 二、创建对象

创建对象的两种方式:save(),create()

save():要创建一个对象,用关键字参数初始化它,然后调用 save() 将其存入数据库

    student = StudentModel(first_name=,last_name=,index=3)
    student.save()

create():要一步创建并保存一个对象,使用 create() 方法

通过日志打印结果来看,两种方式执行的是相同的SQL语句:

技术分享图片

 

 三、查询对象

特性:

1、all()方法返回所有对象

2、filter(**kwargs)返回一个新的 QuerySet,包含的对象满足给定查询参数。

3、exclude(**kwargs)返回一个新的 QuerySet,包含的对象  满足给定查询参数。

4、上述3个方法返回的均是一个queryset对象,可以进行链式查询:

student1 = StudentModel.objects.all()
student2 = student1.filter(index=3)
student3 = student2.exclude(last_name=‘张‘)

三个queryset对象相互独立,互不影响

技术分享图片

 5、queryset的惰性:创建queryset时不会触发数据库查询操作,只有在调用时才会触发查询比如打印、循环遍历:

技术分享图片

django查询相关的相关操作

原文:https://www.cnblogs.com/Xiaojiangzi/p/13085009.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!