有时候ORM的操作效率可能偏低 我们是可以自己编写SQL的
方式1:
models.User.objects.raw('select * from app01_user;')
方式2:
from django.db import connnection
cursor = connection.cursor()
cursor.execute('select name from app01_user;')
print(cursor.fetchall())
神奇的双下划线查询
"""
只要还是Queryset对象就可以无限制的点Queryset对象的方法
Queryset.filter().values.filter().values_list().filter()...
"""
查询年龄大于18的用户数据
res = models.User.objects.filter(age__gt=18)
查询年龄小于38的用户数据
res = models.User.objects.filter(age__lt=38)
大于等于 小于等于
res = models.User.objects.filter(age__gte=18)
res = models.User.objects.filter(age__lte=38)
查询年龄是18或者28或者38的数据
res = models.User.objects.filter(age__in=(18,28,38))
查询年龄在18到38范围之内的数据
res = models.User.objects.filter(age__range=(18,38))
查询名字中含有字母j的数据
res = models.User.objects.filter(name__contains='j') # 区分大小写
res = models.User.objects.filter(name__icontains='j') # 不区分大小写
查询注册年份是2022的数据
res = models.User.objects.filter(register_time__year=2022)
"""针对django框架的时区问题 是需要修改配置文件的 后续bbs讲解"""
1.查询主键为1的书籍对应的出版社名称
res = models.Book.objects.filter(pk=1).values('publish__name', 'title')
2.查询主键为4的书籍对应的作者姓名
res = models.Book.objects.filter(pk=4).values('title', 'authors__name')
3.查询jason的电话号码
res = models.Author.objects.filter(name='jason').values('author_detail__phone')
4.查询北方出版社出版过的书籍名称和价格
res = models.Publish.objects.filter(name='北方出版社').values('book__title', 'book__price', 'name')
5.查询jason写过的书籍名称
res = models.Author.objects.filter(name='jason').values('book__title', 'name')
6.查询电话号码是110的作者姓名
res = models.AuthorDetail.objects.filter(phone=110).values(' phone', 'author__name')
进阶操作
1.查询主键为1的书籍对应的出版社名称
res = models.Publish.objects.filter(book__pk=1)).values('name')
2.查询主键为4的书籍对应的作者姓名
res = models.Author.objects.filter(book__pk=4).values('name', 'book__title')
3.查询jason的电话号码
res = models.AuthorDetail.objects.filter(author__name='jason').values('phone')
4.查询北方出版社出版过的书籍名称和价格
res = models.Book.objects.filter(publish__name='北方出版社').values('title', 'price')
5.查询jason写过的书籍名称
res = models.Book.objects.filter(authors__name='jason').values('title')
6.查询电话号码是110的作者姓名
res = models.Author.objects.filter(author_detail__phone=110).values('name')
"""
补充
查询主键为4 的书籍对应的作者的电话号码
方式1:
res = models.Book.objects.filter(pk=4).values('authors__author_tetail__phone')
方式2:
res = models.AuthorDetail.objects.filter(author__book__pk=4).values('phone')
方式3:
res = models.Author.objects.filter(book__pk=4).values('author_detail__phone')
"""
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性