神奇的双下划线查询
Posted xiongying4
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了神奇的双下划线查询相关的知识,希望对你有一定的参考价值。
Django终端打印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)
以上是关于神奇的双下划线查询的主要内容,如果未能解决你的问题,请参考以下文章