溫馨提示×

溫馨提示×

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

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

django刪除數(shù)據(jù)庫數(shù)據(jù)的方法

發(fā)布時間:2020-08-07 10:18:30 來源:億速云 閱讀:1412 作者:小新 欄目:編程語言

這篇文章主要介紹django刪除數(shù)據(jù)庫數(shù)據(jù)的方法,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!

在用django操作數(shù)據(jù)庫之前,我們先需要知道什么是orm。

什么是ORM?  

ORM(對象關(guān)系映射)指用面向?qū)ο蟮姆椒ㄌ幚頂?shù)據(jù)庫中的創(chuàng)建表以及數(shù)據(jù)的增刪改查等操作。

簡而言之,就是將數(shù)據(jù)庫的一張表當(dāng)作一個類,數(shù)據(jù)庫中的每一條記錄當(dāng)作一個對象。在Django中定義一個類,就是在數(shù)據(jù)庫中創(chuàng)建一張表格。在Django中實例化一個類的對象,就是在數(shù)據(jù)庫中增加了一條記錄。在Django中刪除一個對象,就是在數(shù)據(jù)庫中刪除了一條記錄。在DJango中更改一個對象的屬性,就是在數(shù)據(jù)庫中修改一條記錄的值。在django中遍歷查詢對象的屬性值,就是在數(shù)據(jù)庫中查詢記錄的值。

下面是幾條django的views視圖函數(shù)中的命令語句。

一,增(create,save)

from app01.models import *    #create方式一:   Author.objects.create(name='Alvin')
    #create方式二:   Author.objects.create(**{"name":"alex"})
    #save方式一:     author=Author(name="alvin") author.save()    #save方式二:     author=Author()
                    author.name="alvin"
                    author.save()

注意,增加時create+save兩個組合,create是增的動作,save是加的動作,缺一個都不中。

二,刪(delete)

>>> Book.objects.filter(id=1).delete()
(3, {'app01.Book_authors': 2, 'app01.Book': 1})

如果是多對多的關(guān)系: remove()和clear()方法:

#正向book = models.Book.objects.filter(id=1)#刪除第三張表中和女孩1關(guān)聯(lián)的所有關(guān)聯(lián)信息book.author.clear()        #清空與book中id=1 關(guān)聯(lián)的所有數(shù)據(jù)book.author.remove(2)  #可以為idbook.author.remove(*[1,2,3,4])     #可以為列表,前面加*#反向author = models.Author.objects.filter(id=1)
author.book_set.clear() #清空與boy中id=1 關(guān)聯(lián)的所有數(shù)據(jù)

 三,改(update和save)

#---------------- update方法直接設(shè)定對應(yīng)屬性----------------
   models.Book.objects.filter(id=3).update(title="PHP")    ##sql:
   ##UPDATE "app01_book" SET "title" = 'PHP' WHERE "app01_book"."id" = 3; args=('PHP', 3)

#--------------- save方法會將所有屬性重新設(shè)定一遍,效率低-----------
   obj=models.Book.objects.filter(id=3)[0]
   obj.title="Python"
   obj.save()# SELECT "app01_book"."id", "app01_book"."title", "app01_book"."price", # "app01_book"."color", 
   "app01_book"."page_num", # "app01_book"."publisher_id" FROM "app01_book" WHERE "app01_book"."id" = 3 LIMIT 1; #
    # UPDATE "app01_book" SET "title" = 'Python', "price" = 3333, "color" = 'red', "page_num" = 556,# 
    "publisher_id" = 1 WHERE "app01_book"."id" = 3;

四,查(update和save)

# 查詢相關(guān)API:#  <1>filter(**kwargs):      它包含了與所給篩選條件相匹配的對象
# <2>all():    查詢所有結(jié)果
#  <3>get(**kwargs):返回與所給篩選條件相匹配的對象,返回結(jié)果有且只有一個,如果符合篩選條件的對象超過一個或者沒有都會
拋出錯誤。#-----------下面的方法都是對查詢的結(jié)果再進(jìn)行處理:比如 objects.filter.values()--------
#  <4>values(*field):   返回一個ValueQuerySet——一個特殊的QuerySet,運行后得到的并不是一系列 model的實例化對象,
而是一個可迭代的字典序列
#  <5>exclude(**kwargs): 它包含了與所給篩選條件不匹配的對象
#  <6>order_by(*field):  對查詢結(jié)果排序
#  <7>reverse(): 對查詢結(jié)果反向排序
#  <8>distinct(): 從返回結(jié)果中剔除重復(fù)紀(jì)錄
#  <9>values_list(*field):   它與values()非常相似,它返回的是一個元組序列,values返回的是一個字典序列
#  <10>count():   返回數(shù)據(jù)庫中匹配查詢(QuerySet)的對象數(shù)量。
# <11>first():    返回第一條記錄
# <12>last():  返回最后一條記錄
#  <13>exists(): 如果QuerySet包含數(shù)據(jù),就返回True,否則返回False。

以上是django刪除數(shù)據(jù)庫數(shù)據(jù)的方法的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI