• django查询相关的相关操作


    参考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时不会触发数据库查询操作,只有在调用时才会触发查询比如打印、循环遍历:

    6、get()返回结果只能有一条,没有符合条件的或者符合条件个数大于1的,会抛出异常;get()返回的结果是一个对象,不支持链式查询

  • 相关阅读:
    Xshell连接阿里云Centos6.8
    vsftpd文件服务器安装与配置
    JDK安装(linux系统)
    网站架构
    linux软件源配置
    java 调用静态方法和构造函数和静态块执行的先后顺序
    Mybatis的WHERE和IF动态
    MAVEN项目(仓库中没有jar包)
    Shiro
    MVC系列学习(六)-Razor语法
  • 原文地址:https://www.cnblogs.com/canghai1024/p/13085009.html
Copyright © 2020-2023  润新知