13Django資料庫操作API詳解(二)
阿新 • • 發佈:2021-11-02
1. 常用API總結
1) len()與count()統計物件數量
這兩個方法都可以獲取 QuerySet 物件的數量,但是它們稍微有一些不同,len 方法相對於 count 方法效率較低。示例如下:
- #len方法查詢所有資料再計算迭代物件的數量
- In [1]: len(Book.objects.all())
- Out[1]: 6
- #count()相當於執行select count(欄位)直接返回統計結果
- In [2]: Book.objects.all().count()
- Out[2]: 6
所以經過上面的示例說明,建議在需要獲取 QuerySet 數量的時候使用 count()方法。
2) exists()條件判斷資料記錄是否存在
在很多情況下,我們需要根據給定的條件判斷資料是否在 Model 中存在。Django 提供了一個簡便的方法 exists() 方法,它的返回值是一個布林值,如果存在的情況下將返回 Ture,反之返回 False。示例如下:
- In [3]: Book.objects.filter(title__exact="Python").exists()
- Out[3]: True
3) update方法更新Model例項
使用 update 方法來更新 Model 例項是非常簡便的,它相比 save 方法來說,對開發者更加友好。update 方法可以可以一次更新多個物件,並返回一個整數,標識被改動的資料記錄數量,示例說明如下:
- In [4]: Book.objects.filter(title__exact="Python").update(title="Python Django")
- Out[4]: 1
4) delete方法刪除資料記錄
如果想刪除一條資料記錄,我們可以呼叫 delete() 方法。舉例如下:
純文字複製
- #呼叫delete方法刪除
- In [4]: Book.objects.filter(title__exact="Tornado").delete()
- Out[4]: (3, {'index.Author_books': 2, 'index.Book': 1})
delete 方法返回一個二元組:第一個元素代表刪除例項的總個數,第二個元素是字典型別,記錄每一個 Model 型別刪除的例項個數。由於作者表和書籍表之間存在多對多的關係,所以此處刪除了兩個 Model 例項,而書籍表中刪除title=Tornado
本節知識作為《Django查詢資料庫操作詳解(一)》的第二部分。通過這兩節知識的學習,大家對這些 API 一定不再陌生,只要勤加練習,就會熟練掌握它們,學會使用這些 API 會給我們的開發工作帶來極大的方便。