日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Django(part24)--查询数据

發布時間:2023/12/19 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django(part24)--查询数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學習筆記,僅供參考,有錯必糾


文章目錄

    • 數據庫的操作(CRUD操作)
      • 查詢數據
        • all方法
        • values方法
        • values_list方法
        • order_by方法
        • filter方法
        • get方法
        • exclude方法


數據庫的操作(CRUD操作)


查詢數據


數據庫的查詢同樣需要使用管理器對象,即通過 Entry.objects 管理器方法調用查詢接口。


方法說明
all()查詢全部記錄,返回QuerySet查詢對象
get()查詢符合條件的單一記錄
filter()查詢符合條件的多條記錄
exclude()查詢符合條件之外的全部記錄

all方法


  • 用法
Entry.objects.all()
  • 等同的mysql語句
select * from tabel;

我們在Django shell中敲入如下命令:

In [5]: from bookstore import models...: books = models.Book.objects.all()...: for book in books:...: print("書名", book.title, '出版社:', book.pub)...: 書名 Djangoweb開發實戰 出版社: 清華大學出版社 書名 python 出版社: 機械工業出版社 書名 R 出版社: 人民郵電出版社
  • 自定義默認字符串

在models.py中我們也可以自定義默認字符串:

class Book(models.Model):title = models.CharField("書名", max_length = 30)pub = models.CharField("出版社名", max_length = 50,null = True)def __str__(self):string = "書名:%s, 出版社:%s" % (self.title, self.pub) return string

更改過models.py文件后,記得進行遷移。


我們再次使用Django shell敲入如下命令:

In [1]: from bookstore import models...: books = models.Book.objects.all()...: for book in books:...: print(book)...: 書名:Djangoweb開發實戰, 出版社:清華大學出版社 書名:python, 出版社:機械工業出版社 書名:R, 出版社:人民郵電出版社

values方法


values方法會返回指定列,且查詢結果用字典表示。


  • 用法
Entry.objects.values(...)
  • 等同的mysql語句
select 列1,列2 from tabel;
  • 返回值(QuerySet容器對象)

QuerySet為查詢結果容器,容器內存放著字典,每個字典代表一條數據,每一條數據的格式為:

{'列1':1, '列2':2}
  • 示例

我們在Django shell下敲入如下代碼:

In [2]: from bookstore import models...: books = models.Book.objects.values("title", "pub")...: for book in books:...: print("書名", book["title"], '出版社:', book['pub'])...: print("book=", book)...: 書名 Djangoweb開發實戰 出版社: 清華大學出版社 book= {'title': 'Djangoweb開發實戰', 'pub': '清華大學出版社'} 書名 python 出版社: 機械工業出版社 book= {'title': 'python', 'pub': '機械工業出版社'} 書名 R 出版社: 人民郵電出版社 book= {'title': 'R', 'pub': '人民郵電出版社'}

values_list方法


values_list方法會返回指定列,且查詢結果用元祖表示。


  • 用法
Entry.objects.values_list(...)
  • 返回值(QuerySet容器對象)

查詢出來的數據會被封裝到元組中,再封裝到查詢集合QuerySet中。


  • 示例

我們在Django shell下敲入如下代碼:

In [3]: from bookstore import models...: books = models.Book.objects.values_list("title", "pub")...: for book in books:...: print("book=", book)...: book= ('Djangoweb開發實戰', '清華大學出版社') book= ('python', '機械工業出版社') book= ('R', '人民郵電出版社')

order_by方法


利用order_by方法可以進行排序查詢,與all()方法不同的是,它會用SQL 語句的ORDER BY 子句對查詢結果進行排序。


  • 用法
Entry.objects.order_by('-列','列')

默認是按照升序排序,降序排序則需要在列前增加-負號


  • 舉個例子

我們在Django shell下敲入如下代碼:

In [6]: from bookstore import models...: authors = models.Author.objects.order_by("age")...: for author in authors:...: print("姓名:", author.name, '年齡:', author.age)...: 姓名: 小黃 年齡: 10 姓名: 山羊 年齡: 23

filter方法


filter方法可以根據條件查詢多條記錄。


  • 用法
Entry.objects.filter(屬性1=1, 屬性2=2)
  • 返回值QuerySet

查詢結果返回值為QuerySet容器對象,容器內部存放Entry 實例。


  • 舉個例子

我們在Django shell下敲入如下代碼:

In [7]: from bookstore import models...: books = models.Book.objects.filter(pub="機械工業出版社")...: for book in books:...: print("書名:", book.title)...: 書名: python

get方法


利用get方法可以返回滿足查詢條件的唯一一條數據,


  • 用法
Entry.objects.get(條件)
  • 返回值

Entry 對象


  • 舉個例子

如果我們的查詢結果多于1條,則會報MultipleObjectsReturned異常

from bookstore import models author = models.Author.objects.get(age__range=(20,30))

報錯信息:

MultipleObjectsReturned: get() returned more than one Author -- it returned 2!

如果沒有查詢結果,則拋出Model.DoesNotExist異常

from bookstore import models author = models.Author.objects.get(id=100)

報錯信息:

DoesNotExist: Author matching query does not exist.

如果查詢結果只有1條,則不會報錯:

In [12]: from bookstore import models...: author = models.Author.objects.get(id=1)...: print(author.name)...: 山羊

exclude方法


exclude方法將返回不包含此條件的數據集


  • 用法
Entry.objects.exclude(條件)
  • 舉個例子
In [13]: books = models.Book.objects.exclude(pub="清華大學出版社")...: for book in books:...: print(book)...: 書名:python, 出版社:機械工業出版社 書名:R, 出版社:人民郵電出版社

總結

以上是生活随笔為你收集整理的Django(part24)--查询数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。