神奇的双下划线查询

Posted xiongying4

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了神奇的双下划线查询相关的知识,希望对你有一定的参考价值。

Django终端打印SQL语句

查看orm内部sql语句的方法有哪些

1.如果是queryset对象 那么可以点query直接查看该queryset的内部sql语句

2.在django项目的配置文件中 配置一下参数即可实现所有的orm在查询的时候自动打印对应的sql语句

如果你想知道你对数据库进行操作时,Django内部到底是怎么执行它的sql语句时可以加下面的配置来查看

在Django项目的settings.py文件中,在最后复制粘贴如下代码:

LOGGING = {
    version: 1,
    disable_existing_loggers: False,
    handlers: {
        console:{
            level:DEBUG,
            class:logging.StreamHandler,
        },
    },
    loggers: {
        django.db.backends: {
            handlers: [console],
            propagate: True,
            level:DEBUG,
        },
    }
}

配置好之后,再执行任何对数据库进行操作的语句时,会自动将Django执行的sql语句打印到pycharm终端上

技术图片
# 查询价格大于200的书籍
res = models.Book.objects.filter(price__gt=200)  # gt表示大于
print(res)
# 查询价格小于200的书籍
res = models.Book.objects.filter(price__lt=200)  # lt表示小于
print(res)

# 查询价格大于等于200.22的书籍
res = models.Book.objects.filter(price__gte=200.22)  # 加上‘e‘就表示等于的意思
print(res)
# 查询价格小于等于200.22的书籍
res = models.Book.objects.filter(price__lte=200.22)
print(res)


# 查询价格要么是200,要么是300,要么是666.66
res = models.Book.objects.filter(price__in=[200,300,666.66])  # 使用in加类表来表示
print(res)
# 查询价格在200到800之间的
res = models.Book.objects.filter(price__range=(200,800))  # 两边都包含
print(res)

# 查询书籍名字中包含p的
"""原生sql语句 模糊匹配
    like 
        %
        _
"""
res = models.Book.objects.filter(title__contains=p)  # contains仅仅只能拿小写p
res = models.Book.objects.filter(title__icontains=p)  # icontains忽略大小写

print(res)


# 查询书籍是以三开头的
res = models.Book.objects.filter(title__startswith=)  # startswith:以....开头
res1 = models.Book.objects.filter(title__endswith=p)  # endswith:以.....结尾
print(res)
print(res1)


# 查询出版日期是2017的年(******)
res = models.Book.objects.filter(create_time__year=2017)
print(res)
例题

以上是关于神奇的双下划线查询的主要内容,如果未能解决你的问题,请参考以下文章

django-模型层(ORM语法)

django-模型层(ORM语法)

Django---进阶5

Django---进阶5

Django基础之模型(models)层

Django ORM表查询操作