Django ORM相關操作(2)
阿新 • • 發佈:2018-11-17
今天就講講關於雙下劃線的操作,這是第二篇關於orm相關操作的文章,還想看請往上翻第一篇。
# -*- coding: utf-8 -*- # @Time : 2018/11/15 19:26 # @Author : lh # @Email : .com # @File : orm_test.py # @Software: PyCharm """ ORM小總結 前面講解了如何在一個python指令碼或者檔案中假裝Django專案的配置和變數資訊 """ import os if __name__ == '__main__': # 載入Django專案的配置資訊 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Django_test1.settings") # 匯入Django專案,並且啟動專案 import django django.setup() # 匯入你需要的models from users import models # # 使用.all()方法進行查詢所有的書籍 # print('.all()'.center(100, '#')) # ret = models.Books.objects.all() # print(ret) # # #使用.filter()方法進行篩選查詢 # print('.filter()'.center(100, '#')) # ret = models.Books.objects.filter(id=1) # 使用filter() 比使用get()方法要好,如果資料不存在就返回空,不會報錯 # print(ret) # # # 使用exclude()方法進行查詢,他返回與所給篩選條件不匹配的物件 # print('.exclude()'.center(100, '#')) # ret = models.Books.objects.exclude(id=1) # print(ret) # # # 使用values()方法進行查詢, 返回一個ValueQuerySet——一個特殊的QuerySet,執行後得到的並不是一系列model的例項化物件,而是一個可迭代的字典序列 # print('.values()'.center(100, '#')) # ret = models.Books.objects.values() #如果返回空的欄位,預設返回所有的資料。也可以加欄位(.values('name')) # print(ret) # # print("values_list".center(100, "#")) # # # values_list 返回一個QuerySet物件,裡面都是元祖。 不寫欄位名,預設查詢所有欄位 # ret = models.Books.objects.values_list() # print(ret) # # print("count".center(100, "*")) # # # count 返回QuerySet中物件的數量 # ret = models.Books.objects.all().count() # print(ret) # # print("first".center(100, "*")) # # # first 返回QuerySet中第一個物件 # ret = models.Books.objects.all().first() # print(ret) # # print("last".center(100, "*")) # # # last 返回QuerySet中最後一個物件 # ret = models.Books.objects.all().last() # print(ret) # # print("exists".center(100, "*")) # # # exists 判斷表裡有沒有資料 # ret = models.Books.objects.exists() # print(ret) # 雙下劃綫查詢 ret = models.Author.objects.filter(id__gt=1 , id__lt=10) # 獲取id大於1而且小於10的值 print(ret) print('id__in'.center(100, '!')) ret = models.Author.objects.filter(id__in=[6, 7, 22]) # 獲取id為6,7,22的值 print(ret) ret = models.Author.objects.filter(name__contains='小') # 獲取名字欄位包含小的值 print(ret) ret = models.Author.objects.filter(id__range=[1, 10]) # 獲取id範圍1~10的所有值,相當於sql的bettwen and print(ret)
輸出結果: