神奇的双下划线查询

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)
例题

猜你喜欢

转载自www.cnblogs.com/xiongying4/p/11551723.html
今日推荐