91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

django連接數據庫查詢的方法

發布時間:2020-09-02 11:25:33 來源:億速云 閱讀:267 作者:小新 欄目:編程語言

這篇文章主要介紹django連接數據庫查詢的方法,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

Django項目要操作數據庫,首先要和數據庫建立連接,才能讓程序中的數據和數據庫關聯起來進行數據的增刪改查操作。通過pymysql模塊完成和數據庫之間的交互過程。

Django項目默認使用mysqldb模塊進行和mysql數據庫之間的交互操作,但是mysqldb模塊對于python3.4以上的版本支持還不夠完善,所以我們要使用替代方案。

數據查詢

要從數據庫檢索數據,首先要獲取一個*查詢集***(QuerySet),查詢集表示從數據庫獲取的對象集合,它可以有零個,一個或多個過濾器。返回查詢集的方法,稱為過濾器,過濾器根據給定的參數縮小查詢結果范圍,相當于sql語句中where或limit。

在管理器上調用過濾器方法會返回查詢集,

查詢集經過過濾器篩選后返回新的查詢集,因此可以寫成鏈式過濾,

惰性執行:創建查詢集不會帶來任何數據庫的訪問,直到調用數據時,才會訪問數據庫,

以下對查詢集求值:迭代、切片、序列化、與if合用、repr()/print()/len()/list()/bool()。

返回查詢集

all()

# 獲取所有數據,對應SQL:select * from User
User.objects.all()

filter(**kwargs) 返回QuerySet包含與給定查找參數匹配的新查詢集。

#等價sql:select * from User
User.objects.filter()

#等價sql:select * from User where uname = 'admin'
User.objects.filter(uname='admin')

#等級sql:select * from User where uid > 1 and type = 2
User.objects.filter(uid__gt=1,type=2)

#鏈式調用,等價于User.objects.filter(uid__gt=1,type=2)
User.objects.filter(uid__gt=1).filter(type=2)

exclude(**kwargs)

# 不匹配,對應SQL:select * from User where name != 'admin'
User.objects.exclude(name='admin')

order_by(*fields)

參數是字段名,可以有多個字段名,默認是升序。

如果要按某個字段降序,在字段名前加’-’: "-uid"表示按uid降序排列

 #按uid升序排列  等價于 order by uid
  User.objects().order_by('uid')

  #按uid降序排列  等價于 order by uid desc
  User.objects.order_by('-uid')

  #多列排序 等價于 order by password,uid desc
  User.objects.order_by('password','-uid')

返回單個值

下面這些方法后面不能再跟其他過濾方法,因為他們不返回查詢集

get() 只匹配一條數據

u = User.objects.get(pk=1)  #正常
u = User.objects.get(uid__gt=20) #MultipleObjectsReturned 匹配到了多條數據
u = User.objects.get(uid__lt=-1) #DoesNotExist 匹配失敗

first()和last()

User.objects.all().first()  #返回結果集中第一條數據
User.objects.all().last()   #返回結果集中最后一條數據

count()

返回結果集記錄數目,等價于select count(*)不會返回整個結果集,相比len方法更有效

User.objects.count()

exists()

判斷查詢集中是否有記錄,有返回True,否則返回False

User.objects.filter(uid=3).exists()

查詢集限制

查詢集類似列表,可以使用下標進行限制,類似sql語句中的limit子句。但索引不能是負數

索引

切片

User.objects.all()[0]  #等同于:limit 0,1
User.objects.all()[2]  #等同于:limit 2,1
User.objects.all()[0:2] #等同于limit 2
User.objects.all()[:2] #等同于limit 2
User.objects.all()[::2]

以上是django連接數據庫查詢的方法的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宜黄县| 阜宁县| 岐山县| 宕昌县| 隆化县| 和田县| 鲁甸县| 荔波县| 宜丰县| 兴城市| 三江| 灌云县| 军事| 佛山市| 阿拉尔市| 诸城市| 绥中县| 利川市| 英吉沙县| 兰西县| 贵州省| 台东县| 垣曲县| 金坛市| 芦溪县| 株洲市| 慈利县| 巴南区| 眉山市| 郸城县| 内乡县| 华安县| 上杭县| 普洱| 翁源县| 昭平县| 鹤峰县| 东山县| 措勤县| 衢州市| 文化|