溫馨提示×

溫馨提示×

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

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

怎么用Django框架中的ORM系統(tǒng)對數(shù)據(jù)庫數(shù)據(jù)進(jìn)行增刪改查

發(fā)布時(shí)間:2021-09-06 13:01:08 來源:億速云 閱讀:194 作者:chen 欄目:開發(fā)技術(shù)

這篇文章主要講解了“怎么用Django框架中的ORM系統(tǒng)對數(shù)據(jù)庫數(shù)據(jù)進(jìn)行增刪改查”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“怎么用Django框架中的ORM系統(tǒng)對數(shù)據(jù)庫數(shù)據(jù)進(jìn)行增刪改查”吧!

目錄
  • 1.數(shù)據(jù)的增刪改查----------增加數(shù)據(jù)

    • 在視圖函數(shù)中導(dǎo)入U(xiǎn)ser模型類,然后使用下面的方法添加數(shù)據(jù):

  • 2.數(shù)據(jù)的增刪改查----------查找數(shù)據(jù)

    • 這時(shí)在定義模型類時(shí)定義的__str__()方法的作用就表現(xiàn)了出來

    • User模型類導(dǎo)入

  • 3.數(shù)據(jù)的增刪改查----------刪除數(shù)據(jù)

    • 4.數(shù)據(jù)的增刪改查----------修改數(shù)據(jù)

      1.數(shù)據(jù)的增刪改查----------增加數(shù)據(jù)

      在視圖函數(shù)中導(dǎo)入U(xiǎn)ser模型類,然后使用下面的方法添加數(shù)據(jù):

      from django.http import HttpResponse
      from .models import User
      # Create your views here.
      def add_user(request):
          #方法一
          taka = User(name='taka',age=18)
          taka.save()
          #方法二
          xiaopo = User()
          xiaopo.name = 'xiaopo'
          xiaopo.age = 18
          xiaopo.save()
          #方法三
          aa = User.objects.get_or_create(name='xiaohong',age=18)  #插入前會進(jìn)行查找,如果沒有相同的數(shù)據(jù)就會添加;如果有就不會。
          print(aa)       #會返回一個(gè)元組,第一個(gè)數(shù)據(jù)是添加成功的實(shí)例;第二個(gè)數(shù)據(jù)是True或False。(添加成功為True;反之為False)
          # 此處打印結(jié)果:   (<User: name:xiaohong, age:18>, True)
      
          # 插入前會進(jìn)行查找,如果沒有相同的數(shù)據(jù)就會添加;如果有就不會。   因?yàn)樯厦娌迦肓讼嗤瑪?shù)據(jù),所以此處不會插入數(shù)據(jù)。
          User.objects.get_or_create(name='xiaohong',age=18)  
          return HttpResponse("插入數(shù)據(jù)成功!")

      實(shí)現(xiàn)效果:
      (注意:分配一下路由,要訪問到此視圖才會執(zhí)行?。?/p>

      怎么用Django框架中的ORM系統(tǒng)對數(shù)據(jù)庫數(shù)據(jù)進(jìn)行增刪改查

      怎么用Django框架中的ORM系統(tǒng)對數(shù)據(jù)庫數(shù)據(jù)進(jìn)行增刪改查

      2.數(shù)據(jù)的增刪改查----------查找數(shù)據(jù)

      這時(shí)在定義模型類時(shí)定義的__str__()方法的作用就表現(xiàn)了出來

      控制查詢的數(shù)據(jù)顯示的格式(即顯示模型的簡單表示)

      from django.db import models
      # Create your models here.
      class User(models.Model):
          id = models.AutoField(primary_key=True)       #主鍵可以省略,Django默認(rèn)會為我們加上一個(gè)名為id的主鍵,寫的話就可以改主鍵的名字!
          name = models.CharField(max_length=50)        # CharField——字符串
          age = models.IntegerField()                   # IntegerField——整數(shù)
          def __str__(self):
              """
              返回模型的字符串表示
              我們告訴Django,默認(rèn)應(yīng)使用哪個(gè)屬性來顯示有關(guān)此模型的信息
              Django調(diào)用方法__str__()來顯示模型的簡單表示
              """
              return "name:%s, age:%s" %(self.name,self.age)

      進(jìn)行查詢: 

      User模型類導(dǎo)入

      from django.http import HttpResponse
      from .models import User
      def search_user(request):
          #查詢所有記錄對象
          rs1 = User.objects.all()
          print("這是所有記錄對象:",rs1)			#通過觀察,可以發(fā)現(xiàn)查詢到的記錄對象的輸出方式就是模型中的__str__的格式.
          # 同時(shí)這個(gè)查詢結(jié)果rs1是個(gè)queryset對象,是一個(gè)類似于列表的對象。具備列表里的一些常用方法,比如:切片[0:3],下標(biāo)取值rs1[1]...但是下標(biāo)取值的話不支持反向取值。
          #查詢一個(gè)記錄對象
          rs2 = User.objects.get(name="xiaopo")  # 此方法查詢,如果不存在/存在多條都會報(bào)錯(cuò)!  所以一般通過id值。
          print("這是一個(gè)記錄對象:",rs2)
          #查詢滿足條件的對象
          rs3 = User.objects.filter(name='xiaoming')  # 取不到則為空;多條的話都可以取到
          print("這是滿足條件的對象:",rs3)
          return HttpResponse("查詢數(shù)據(jù)成功!")

      注意:
      1.all()和filter()方法返回的是QuerySet對象,查詢不到則為空(但咋樣都不會報(bào)錯(cuò),就很牛?。?。
      2.get()方式返回的單個(gè)對象,如果符合條件的對象有多個(gè),則get報(bào)錯(cuò)!而且如果查詢不到也會報(bào)錯(cuò)!

      實(shí)現(xiàn)效果:

      怎么用Django框架中的ORM系統(tǒng)對數(shù)據(jù)庫數(shù)據(jù)進(jìn)行增刪改查

      怎么用Django框架中的ORM系統(tǒng)對數(shù)據(jù)庫數(shù)據(jù)進(jìn)行增刪改查

      3.拓展——關(guān)于QuerySet簡單整兩句:

      從數(shù)據(jù)庫中查詢出來的結(jié)果一般是一個(gè)集合,這個(gè)集合叫做 QuerySet(是一個(gè)類似于列表的對象,具備列表里的一些常用方法,比如:切片[0:3],下標(biāo)取值rs1[1]…但是下標(biāo)取值的話不支持反向取值).QuerySet是可迭代對象.QuerySet支持切片, 不支持負(fù)索引.可以用list強(qiáng)行將QuerySet變成列表.

      3.數(shù)據(jù)的增刪改查----------刪除數(shù)據(jù)

      from django.http import HttpResponse
      from .models import User
      def delete_user(request):
          #實(shí)例和QuerySet對象都具備刪除方法!    
          User.objects.get(id=1).delete()				#get方法得到的是單個(gè)對象(一個(gè)實(shí)例對象),所以是刪除一條數(shù)據(jù)!    
          User.objects.filter(age=18).delete()		#刪除所有age屬性值為18的數(shù)據(jù)!    
          User.objects.all().delete()					#刪除所有數(shù)據(jù)!    
          s = User.objects.filter(age=18)
          s[1].delete()								#刪除age值為18的數(shù)據(jù)中指定的一條    
          return HttpResponse("刪除數(shù)據(jù)成功!")

      4.數(shù)據(jù)的增刪改查----------修改數(shù)據(jù)

      from django.http import HttpResponse
      from .models import User
      def update_user(request):
          #第一種方法:先查找到數(shù)據(jù),然后再進(jìn)行屬性賦值修改(對于實(shí)例的修改)
          rs = User.objects.get(name="xiaoming")		#修改name屬性值為xiaoming的name屬性值為xiaowang(因?yàn)槭褂昧薵et方法所以僅修改第一條?。?
          rs.name='xiaowang'
          rs.save()    
          #第二種方法:使用update方法直接修改(對于集合的修改,只能用于QuerySet對象)
          User.objects.filter(name='xiaowang').update(name='AAA')	#修改所有name屬性值為xiaowang的name屬性值為AAA!    
          User.objects.all().update(age=22)			#修改所有數(shù)據(jù)的age屬性值為22!    
          return HttpResponse("修改數(shù)據(jù)成功!")

      感謝各位的閱讀,以上就是“怎么用Django框架中的ORM系統(tǒng)對數(shù)據(jù)庫數(shù)據(jù)進(jìn)行增刪改查”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對怎么用Django框架中的ORM系統(tǒng)對數(shù)據(jù)庫數(shù)據(jù)進(jìn)行增刪改查這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

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

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

      AI