人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

使用Django框架中ORM系統(tǒng)實現(xiàn)對數(shù)據庫數(shù)據增刪改查

發(fā)布日期:2022-01-27 10:21 | 文章來源:腳本之家

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

在視圖函數(shù)中導入User模型類,然后使用下面的方法添加數(shù)據:

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)  #插入前會進行查找,如果沒有相同的數(shù)據就會添加;如果有就不會。
 print(aa) #會返回一個元組,第一個數(shù)據是添加成功的實例;第二個數(shù)據是True或False。(添加成功為True;反之為False)
 # 此處打印結果:(<User: name:xiaohong, age:18>, True)
 # 插入前會進行查找,如果沒有相同的數(shù)據就會添加;如果有就不會。因為上面插入了相同數(shù)據,所以此處不會插入數(shù)據。
 User.objects.get_or_create(name='xiaohong',age=18)  
 return HttpResponse("插入數(shù)據成功!")

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

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

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

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

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

進行查詢:

User模型類導入

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

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

實現(xiàn)效果:

3.拓展——關于QuerySet簡單整兩句:

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

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

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

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

from django.http import HttpResponse
from .models import User
def update_user(request):
 #第一種方法:先查找到數(shù)據,然后再進行屬性賦值修改(對于實例的修改)
 rs = User.objects.get(name="xiaoming")		#修改name屬性值為xiaoming的name屬性值為xiaowang(因為使用了get方法所以僅修改第一條!)
 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ù)據的age屬性值為22! 
 return HttpResponse("修改數(shù)據成功!")

以上就是使用Django的ORM實現(xiàn)對數(shù)據庫數(shù)據增刪改查方法的詳細內容,更多關于Django中實現(xiàn)ORM對數(shù)據庫操作的資料請關注本站其它相關文章!

版權聲明:本站文章來源標注為YINGSOO的內容版權均為本站所有,歡迎引用、轉載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網站,禁止在非www.sddonglingsh.com所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內容來源于網友推薦、互聯(lián)網收集整理而來,僅供學習參考,不代表本站立場,如有內容涉嫌侵權,請聯(lián)系alex-e#qq.com處理。

相關文章
上一篇:

syslog服務器

下一篇:

RADIUS服務器

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務

7x24全年不間斷在線

專屬顧問服務

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務熱線

關注
微信

關注官方微信
頂部