標籤:函數 agg 排序 條件 連表 設定 from bsp not
import osif __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進階