Django資料庫筆記(查)

2021-10-04 07:27:50 字數 2693 閱讀 6063

* 使用原生sql語句查詢資料

#使用raw方法

#解釋:執行原始sql並返回模型

#說明:依賴model多用於查詢

#用法:

book = book.objects.raw(

"select * from hello_book"

)for item in book:

print

(item.title)

官方文件:

相關api

1.get(**kwargs)

解釋:返回與篩選條件相匹配的model物件,返回結果有且只有乙個。

說明:如果符合條件的物件多於乙個丟擲multipleobjectsreturned異常,如果沒有找到丟擲doesnotexist異常

語法:modelname.objects.get(itemname=itemnamevalue)

例子:author.objects.get(id=1)

2.all()

解釋:查詢所有結果(懶載入),當查詢的時候並不真實傳送sql語句,用的時候才會真的去查詢

語法:modelname.objects.all()

例子:author.objects.all(id=1)

3.filter(**kwargs)

解釋:包含了與所給的篩選條件相匹配的queryset

語法:modelname.objects.filter(itemname=itemnamevalue)

例子:author.objects.filter(id=1)

4.exclude(**kwargs):

解釋:包含了與所給的篩選件不匹配的queryset,於filter正好相反

語法:modelname.objects.exclude(itemname=itemnamevalue)

例子:author.objects.filter(id=1)

5.order_by(*fields)

解釋:對查詢結果進行排序

語法:modelname.objects.all().order_by(「itemname」)

例子:author.objects.all().order_by(「id」)

6.reverse()

解釋:對查詢結果反向排序

語法:modelname.objects.all().order_by(「itemname」).reverse()

例子:author.objects.all().order_by(「id」)

7.distinct()

解釋:對查詢結果去重

語法:modelname.objects.all().distinct()

例子:author.objects.all().distinct()

8.values(*fields)

解釋:返回乙個valuesqueryset(乙個特殊的queryset)

說明:執行後得到的不是一系列model的例項物件,而是乙個可迭代的字段序列

語法:modelname.objects.filter(name=value).values(「name」,「name」)

例子:author.objects.filter(id=1).values(「name」,「id」)

9.values_list(*fields)

解釋:與values相似只是返回的是乙個元組

語法:modelname.objects.filter(name=value).values_list(「name」,「name」)

例子:author.objects.filter(id=1).values_list(「name」,「id」)

10.count()

解釋:返回資料庫中匹配查詢的物件數量

語法:modelname.objects.filter(itemname=itemnamevalue).count()

例子:author.objects.filter(name=「xiaol」).count()

11.first()/last()

解釋:第一條記錄/最後一條記錄

語法:modelname.objects.filter(itemname=itemnamevalue).first()

例子:author.objects.filter(name=「xiaol」).last()

關聯查詢:

方法:使用兩個下劃線(__)可以進行關聯查詢

例子:查詢autherdetail的資訊

語法:authordetail.objects.filter(id=「2」).values(「***」,「email」, 「author__name」)

聚合查詢:需要引入from django.db.models import *

方法:使用aggreagte關鍵字

用法:***.filter(查詢條件).aggregate(別名=聚合函式(『聚合字段』))

語法:author.objects.filter(name=「xiaol」).aggregate(mycount=count(『id』))

分組查詢:需要引入from django.db.models import *

方法:使用aggreagte關鍵字

用法:***.filter(分組字段).annotate(分組後操作)

語法:author.objects.filter(name=「xiaol」).annotate(mycount=count(『id』))

django學習筆記 (七)模型(資料庫)

django模型與資料庫相關,與資料庫相關的 一般寫在models.py中。django支援sqlite3,mysql,postgresql等資料庫,只需要在settings.py中配置即可,不用修改models.py的 將people models.py改為 from django.db impo...

資料庫增刪查

首先建乙個類繼承sqliteopenhelper重寫裡面的方法 package com.bw.uigaoji.sql import android.content.context import android.database.sqlite.sqlitedatabase import android...

資料庫的 查

資料庫的查詢是最複雜的我們單獨來講 查詢 select 1 最簡單的單錶查詢 1 查詢所有列 select select 學生id,班級id,學號,姓名 from a04學生表 2 查詢部分列 select 學號,姓名 from a04學生表 2 多表查詢 1 兩個表查詢 select a01學院表...