python—day60 Object Relational Mapping(ORM) ORM连表查询 ORM进阶
Posted kermitjam
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python—day60 Object Relational Mapping(ORM) ORM连表查询 ORM进阶相关的知识,希望对你有一定的参考价值。
import os if __name__ == ‘__main__‘: # 指定当前py脚本需要加载的Django项目配置信息 os.environ.setdefault(‘DJANGO_SETTINGS_MODULE‘, ‘BookManageSystem.settings‘) # 启动Django项目 import django django.setup() from app01 import models # 多对多操作 # 1.create # 做了两件事情 # 1.创建了一个名为ker1新的作者 2.将新创建的作者和第一本书做关联 # ret = models.Book.objects.first().author.create( # name=‘ker1‘, # age=18, # phone=‘1516165‘, # detail_id=3 # ) # 查看到第一本书的所有作者,和id # ret = models.Book.objects.first().author.all() # ret = models.Book.objects.first().author.all().values(‘id‘) # print(ret) # 2.set # 通过给第一本书设置id为3和8的作者 # models.Book.objects.first().author.set([3,8]) # 查询第一本书的所有id # ret = models.Book.objects.first().author.all().values(‘id‘) # print(ret) # 3. add # 给第一本书添加一个id为8的作者对象 # models.Book.objects.first().author.add(8) # ret = models.Book.objects.first().author.all().values(‘id‘) # print(ret) # 4.remove # 把第一本书的外键id为3的作者删除掉 # models.Book.objects.first().author.remove(3) # ret = models.Book.objects.first().author.all().values(‘id‘) # print(ret) # 5.clear # 清除第一本书的所有作者 # models.Book.objects.first().author.clear() # ret = models.Book.objects.first().author.all().values(‘id‘) # print(ret) # 6.all # 查看第一本书的对象的所有内容 # ret = models.Book.objects.first().author.all() # print(ret) # 聚合 # 查询所有书的总价格 from django.db.models import Avg, Sum, Max, Min, Count # 用聚合函数之前需要调用aggregate(别名 = 里面写聚合函数(‘条件‘)) # 查到所有书的总价 # ret = models.Book.objects.aggregate(sum_price=Sum(‘price‘)) # print(ret) # 查看平均价格最大的价格最小的价格 # ret = models.Book.objects.aggregate(avg_pirce=Avg(‘price‘), # max_price=Max(‘price‘), # min_price=Min(‘price‘)) # print(ret) # # # 每一本书的作者个数 # ret = models.Book.objects.annotate(c=Count(‘author‘)).values(‘title‘, ‘c‘) # print(ret) # # # 统计出每个出版社买的最便宜的书的价格 # ret = models.Publisher.objects.annotate(min_price=Min(‘books__price‘)).values(‘name‘, ‘min_price‘) # print(ret) # 统计不止一个作者的图书 (书作者的数量大于1) # ret = models.Book.objects.annotate(c=Count(‘author‘)).filter(c__gt=1) # print(ret) # 按照书作者的数量做排序 # ret = models.Book.objects.annotate(c=Count(‘author‘)).order_by(‘c‘) # print(ret) # 查询各个作者出的书的总价格 book__price 书表里面的所有价格综合 # ret = models.Author.objects.annotate(sum_price=Sum(‘book__price‘)).values(‘name‘,‘sum_price‘) # print(ret)
以上是关于python—day60 Object Relational Mapping(ORM) ORM连表查询 ORM进阶的主要内容,如果未能解决你的问题,请参考以下文章